如何防止EnumDropDownListFor将0设置为optionLabel值?

Moh*_*our 4 asp.net-mvc enums asp.net-mvc-5

我有一个enum下拉列表:

@Html.EnumDropDownListFor(model => model.Type, "-- Choose --", new { @class = "postfix" })
Run Code Online (Sandbox Code Playgroud)

为枚举下拉列表生成的html代码是:

<select data-val="true" data-val-required="Select type of ..." id="Type" name="Type" class="valid">
    <option selected="selected" value="0">-- Choose --</option>
    <option value="1">?Hotel</option>
    <option value="2">Flight</option>
</select>
Run Code Online (Sandbox Code Playgroud)

我不希望optionLabel的值为0,因为此值使下拉列表有效并且不会显示任何错误消息.我怎么能阻止这个?

小智 12

我知道它已经过时了,但万一有人偶然发现了这个问题,这是一个有效的解决方法.

而不是使用EnumDropDownListFor,使用带有EnumHelper的标准DropDownListFor:

@Html.DropDownListFor(model => model.Type, EnumHelper.GetSelectList(typeof(yourNamespace.yourType)), "-- Choose --", new { @class = "postfix", @required = "required" })
Run Code Online (Sandbox Code Playgroud)

这将提供所需的输出.我还添加了@required ="required",它将在支持的浏览器中提供本机HTML验证.