2012-02-15 83 views
1

可能重複:
How to get model's field name in custom editor template在自定義編輯器模板中,如何訪問我應該用於編輯控件的字段名稱?

當輸出爲一種特殊類型的實體的編輯控件,例如,比方說,一個顏色或東西:

@Html.EditorFor(product => product.Color) 

我想要輸出一個下拉列表,所以我試圖創建一個自定義編輯器模板,它將呈現這樣一個下拉列表。這裏是我的模板看起來像至今:

@model MyProject.Models.Color 
@using (var db = new MyProject.Models.DbContext()) 
{ 
    @Html.DropDownList(???, 
     new SelectList(db.Colors, "Id", "Name", Model)) 
} 

什麼我必須把???代替 - 指定的下拉列表中HTML name屬性的參數?


(出於顯而易見的原因,它不只是"Color"考慮同樣的編輯模板的幾個調用的相同類型的不同領域,如:

@Html.EditorFor(product => product.InnerColor) 
@Html.EditorFor(product => product.OuterColor) 

顯然,這需要以生成具有不同名稱的下拉菜單)

回答

3

的下拉列表中已經全部由自己接收到正確的字段名稱。您傳遞給name參數的任何內容都將連接到字段名稱,從而防止識別它。

正確的解決辦法是通過空字符串:

@Html.DropDownList("", new SelectList(...)) 
0

this question的回答建議使用

ViewData.TemplateInfo.HtmlFieldPrefix 

所以完整的代碼就不會停像

@model MyProject.Models.Color 
@using (var db = new MyProject.Models.DbContext()) 
{ 
    @Html.DropDownList(ViewData.TemplateInfo.HtmlFieldPrefix + "_Color", 
     new SelectList(db.Colors, "Id", "Name", Model)) 
} 
相關問題