就像在DropDownListFor enums in EF5中一样,我想从代码首先生成一个EF枚举下拉列表。提供的解决方案有效,但未设置所选值。我怎么能这样做?我已经尝试了下面的代码,但它不起作用(SelectList中的最后一个参数重新表示所选值:
@Html.DropDownListFor(model => model.TypeID, new SelectList(Enum.GetValues(typeof(Models.OrganisationType)),model.TypeID))
我已经回答了我的问题。上面的代码正确设置下拉列表中的选定值。出于某种原因,MVC不喜欢我的枚举和属性名称,当我使用“标题”作为我的属性时,“标题”用于我的枚举,如下所示:
@Html.DropDownListFor(model => model.Title, new SelectList(Enum.GetValues(typeof(BL.Titles)),Model.Title),"")
此外,我正在为Create和Edit使用一个View,因此必须添加代码以阻止MVC在创建对象之前尝试设置所选值:
@if(Model == null) {
@Html.DropDownListFor(model => model.PersonsTitle, new SelectList(Enum.GetValues(typeof(HLRA.eForms.BL.PersonsTitle))),"")
}
else
{
@Html.DropDownListFor(model => model.PersonsTitle, new SelectList(Enum.GetValues(typeof(HLRA.eForms.BL.PersonsTitle)),Model.PersonsTitle),"")
}
有谁知道更优雅的方式?
答案 0 :(得分:0)
此:
@Html.DropDownListFor(model => model.PersonsTitle, new SelectList(Enum.GetValues(typeof(HLRA.eForms.BL.PersonsTitle)))))
应该足够了。
我不喜欢你的病情:
@if(Model == null)
您应该定义模型,并且应使用默认值设置属性“PersonsTitle”。