带有int值的MVC DropdownListFor枚举

时间:2013-10-04 15:04:15

标签: c# asp.net-mvc model-view-controller enums html.dropdownlistfor

好的,所以这是一个困扰我的问题,因为我大约3年前第一次开始玩MVC。 绑定到下拉列表一直是一个痛苦的屁股,但有一个巧妙的方法来做这个枚举:

 @Html.DropDownListFor(model => model.Type, new SelectList(Enum.GetValues(typeof(mediaZone.Common.Models.AssetType)), Model.Type))

很好,但唯一的问题是该解决方案将输出如下内容:

<select id="Type" name="Type">
    <option>Image</option>
    <option selected="selected">Video</option>
    <option>Website</option>
</select>

我想做的是输出如下内容:

<select id="Type" name="Type">
    <option value="1">Image</option>
    <option value="2" selected="selected">Video</option>
    <option value="3">Website</option>
</select>

我们现在是MVC的第5版,你会认为很多人都遇到过这个问题并且不想编写代码来修复它。 我真的希望那里的人有一个一行解决我这个棘手问题的方法:)

干杯, / r3plica

1 个答案:

答案 0 :(得分:1)

在控制器中执行它,它只是枚举项的foreach,返回一个包含2个值而不仅仅是名称的集合。

然后......在您的视图中,您可以获得一行代码,比您现在拥有的代码更清晰:

@Html.DropDownListFor(model => model.Type, Model.MySelectList)

执行foreach的其他好处是,您可能需要在每个枚举项的名称中进行国际化,因此您可以在foreach期间进行翻译。