MVC 下拉列表用于具有 int 值的枚举

本文关键字:枚举 int 下拉列表 用于 MVC | 更新日期: 2023-09-27 18:33:51

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

MVC 下拉列表用于具有 int 值的枚举

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

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

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

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