我正在處理一些通過屬性相互關聯的業務對象。例如,我從數據存儲中加載一個「Entry」對象,並通過Author和Editor屬性將它與「User」對象相關聯。自定義編輯MVC2中模型的自定義屬性
class Entry{
public User Author { get; set; }
public User Editor { get; set; }
}
class User{
public string Username { get; set; }
}
當我使用MVC2創建一個新的Entry對象,我想提供一個下拉具有可用用戶的列表。我失去了最好的方式。
現在我正在使用EditorFor調用的路徑,但它有它的問題。例如,我可以做到以下幾點:
<%= Html.EditorFor(model => model.Author) %>
然後創建下共享/ EditorTemplates呈現它作爲一個下拉列表(?可能)的視圖控制,但是這似乎是它會破壞用戶類的所有編輯。例如,如果我試圖直接編輯用戶對象,我希望能夠更新與該類關聯的字段。所以我需要編輯器模板是上下文敏感的。
我也試圖下井手冊的形式創建的路線:
<%= Html.DropDownFor(model => model.Author, (IEnumerable<SelectListItem>)ViewData["Users"]) %>
但是這似乎亂,我很困惑,這些值是如何被序列化回從SelectListItem用戶對象。
任何幫助表示讚賞。我確信之前已經討論過這個問題,但是我很難從我的查詢中獲得任何信息。
這聽起來夠合理。但是,實際上我有一些問題。看起來,我有一種方式(進入視圖),但在按下提交按鈕後無法將其從視圖中取出。 我收到以下錯誤:「從類型'System.String'到類型'TestComplexCreates.Models.User'的參數轉換失敗,因爲沒有類型轉換器可以在這些類型之間進行轉換。」這是可以理解的,因爲下拉菜單顯示字符串,而不是複雜的類型。任何想法,我缺少什麼? – Krisc 2010-03-31 19:19:42
我決定走這條路,只是因爲似乎沒有另一種方式。最終模型必須簡化爲簡單類型。沮喪地說至少。 – Krisc 2010-04-22 12:19:45
您可以通過查看T4模板來減少挫折感。 T4模板可以根據您的實體模型製作ViewModels。 – 2010-04-22 12:50:11