就像在EF5 中的 DropDownListFor 枚举中一样,我想从代码优先的 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),"")
此外,我使用一个视图来创建和编辑,因此必须添加代码来阻止 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),"")
}
有谁知道更优雅的方式?