1

就像在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),"")
        }

有谁知道更优雅的方式?

4

1 回答 1

0

这:

@Html.DropDownListFor(model => model.PersonsTitle, new SelectList(Enum.GetValues(typeof(HLRA.eForms.BL.PersonsTitle)))))

应该足够了。

我不喜欢你的情况:

@if(模型 == null)

您应该定义您的模型,并且应该使用您的默认值设置属性“PersonsTitle”。

于 2013-01-14T11:35:49.380 回答