在.Net Core 2.0中使用MVC6选择标记不显示占位符

时间:2017-10-29 09:19:21

标签: c# asp.net-mvc

我正在更改我的自定义Web应用程序模板,以便Visual Studio使用.Net Core和MVC 6.

在我的注册屏幕上,我的性别下拉列表将不显示“选择性别”,毫无疑问,由于MVC 6标签与MVC 5的工作方式略有不同。

在我当前的模板中,使用下面的代码可以很好地工作并显示如图所示

 @Html.DropDownListFor(m => m.Gender,
                       new SelectList(Enum.GetValues(typeof(Gender))),
                       "Select Gender",
                       new
                          {
                             @class = "form-control",
                             id = "validation-gender"
                          })

Register with Gender correct

我尝试过几次不同的迭代,但要么得到错误,要么下面显示的当前版本有效,但不显示“选择性别”。

MVC 6版

 <select asp-for="Gender" class="form-control" id="validation-gender" 
         asp-items="@(new SelectList(Enum.GetValues(typeof(Gender)),"Select Gender"))">

  </select>

Register with Gender incorrect

有人可以告诉我如何让“选择性别”显示在MVC 6版本中吗?

1 个答案:

答案 0 :(得分:2)

您需要在<option>代码

中手动添加空<select>元素
<select asp-for="Gender" class="form-control" id="validation-gender" 
    asp-items="@(new SelectList(Enum.GetValues(typeof(Gender)),"Select Gender"))">
    <option value="">Select Gender</option>
</select>

作为旁注,您还可以使用asp-items="Html.GetEnumSelectList<Gender>()">代替asp-items="@(new SelectList(Enum.GetValues(typeof(Gender)),这还有一个额外的好处,即尊重任何[Display]属性适用于您的enum