使用ASP.NET MVC 3,我一直在努力爲強類型視圖使用幫助Html.DropDownListFor()函數設置下拉選定的值。Html.DropDownListFor() - 如何爲強類型視圖設置默認選定值?
爲模型的代碼如下所示:
@Html.DropDownListFor(model => model.Language,
new SelectList(ViewBag.AllPossibleLanguages,
"Code", "DisplayName", Model.Language.Code))
有幾個解決方法,如使用
@Html.DropDownList("LanguageCode",
new SelectList(ViewBag.PossibleLanguages,
"Code", "DisplayName", Model.Language.Code))
和好奇:
public class ResourceView
{
...
public Language Language { get; set; }
}
public class Language
{
public string DisplayName { get; private set; }
public string Code { get; private set; }
public override string ToString() { return DisplayName; }
}
,並在視圖中足夠了,以上的代碼不會工作如果第一個標準ameter設置爲「語言」,與模型中的屬性名稱相同。
我也可以這樣做
@Html.DropDownListFor(model => model.Language,
new SelectList(ViewBag.AllPossibleLanguages))
將與適當選擇的值以及工作,但只有語言類的ToString()值將顯示和我想要的實際語言代碼在選項標籤中不會設置,這並不奇怪,因爲沒有任何標識Code字段應該用作值屬性。
我也可以使用jquery事件處理程序來解決這個問題,事件處理程序隨後選擇適當的值。不過,我很好奇爲什麼這不能按預期工作,並希望在可能的情況下妥善解決。
TL; DR:這是在'新的SelectList第四個參數(項目,dataValueField,dataTextField,了selectedValue)' – 2013-10-16 15:29:34