c# - 在.Net Core 2.0中使用MVC6选择标签不显示占位符

标签 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 版本中显示“选择性别”吗?

最佳答案

您需要添加 null <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值(value)观

关于c# - 在.Net Core 2.0中使用MVC6选择标签不显示占位符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46998584/

相关文章:

c# - 使用 html.beginform,如何将 {id} 的值添加到 post url 中?

C# - 如何读取和写入二进制文件?

asp.net-mvc - MVC数据标注层: where to put the set CurrentUICulture statement?

c# - 在 ASP.MVC 中创建一个通用的 NotFound View

c# - 将 foreach 循环转换为 Linq

c# - 更改编辑 |详情 |删除操作链接,为 508 位合规读者提供替代文本

asp.net-mvc - ASP.NET MVC - 避免在 JavaScript 和 C# 中重复验证代码,并使用考虑其他属性值的上下文验证?

c# - 使用简单注入(inject)器解析具有相同类和接口(interface)的多个对象

c# - UI 自动化和国际化

C# CLR 存储过程不会部署到 SQL Server 2005