1

好的,所以自从大约 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

4

1 回答 1

1

在控制器中执行此操作,它只是枚举项的 foreach,返回具有 2 个值的集合,而不仅仅是名称。

然后......在您看来,您可以获得一行代码,比您现在拥有的代码要干净得多:

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

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

于 2013-10-04T16:51:54.760 回答