C# 在.NETCore2.0中使用MVC6选择不显示占位符的标记
我正在将visual studio的自定义web应用程序模板改为使用.Net Core和MVC 6 在我的注册屏幕上,我的性别下拉列表将不会显示“选择性别”,这无疑是因为MVC6标签与MVC5标签的工作方式略有不同 在我当前的模板中,使用下面的代码可以完美地工作并显示如图所示C# 在.NETCore2.0中使用MVC6选择不显示占位符的标记,c#,asp.net-mvc,C#,Asp.net Mvc,我正在将visual studio的自定义web应用程序模板改为使用.Net Core和MVC 6 在我的注册屏幕上,我的性别下拉列表将不会显示“选择性别”,这无疑是因为MVC6标签与MVC5标签的工作方式略有不同 在我当前的模板中,使用下面的代码可以完美地工作并显示如图所示 @Html.DropDownListFor(m => m.Gender, new SelectList(Enum.GetValues(typeof(Gender))),
@Html.DropDownListFor(m => m.Gender,
new SelectList(Enum.GetValues(typeof(Gender))),
"Select Gender",
new
{
@class = "form-control",
id = "validation-gender"
})
我尝试了几个不同的迭代,但要么出现错误,要么下面显示的当前版本有效,但没有显示“选择性别”
MVC6版本
<select asp-for="Gender" class="form-control" id="validation-gender"
asp-items="@(new SelectList(Enum.GetValues(typeof(Gender)),"Select Gender"))">
</select>
有人能告诉我如何在MVC6版本中显示“选择性别”吗?您需要在
标记中手动添加null
元素
<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()”>
而不是asp items=“@(新的SelectList(Enum.GetValues(typeof(Gender))
,它还具有尊重任何[Display]
属性应用于Enum
值的额外优势,这意味着我可以添加一个在我的枚举中选择“性别”属性并向其添加[Display]属性,然后建议的版本将自动使用该属性作为初始默认显示值?不,您不会将“SelectGender”添加为枚举的属性。您可以根据我的答案添加该属性。我答案的第二部分表示您可以执行,例如,公共枚举性别{Male,Female,[Display(Name=“Trans Person”)]TransPerson}
第三个选项将被显示为带有空格的“Trans Person”。是的,我理解手动添加的select选项。您的旁注说“这还有一个额外的优点,即尊重适用于枚举值的任何[Display]属性”。您能详细说明显示属性的用法吗?请参见我前面的注释以获取示例