DropDownListFor EF5所选项目中的枚举

时间:2013-01-14 03:09:15

标签: asp.net-mvc entity-framework razor

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

有谁知道更优雅的方式?

1 个答案:

答案 0 :(得分:0)

此:

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

应该足够了。

我不喜欢你的病情:

  

@if(Model == null)

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