在ASP.NET MVC中验证时拒绝下拉占位符

Jam*_*mes 2 asp.net validation asp.net-mvc html.dropdownlistfor asp.net-mvc-4

在我的ASP.NET MVC4模型中,我有一个必需的属性:

[Required(ErrorMessage = "Select a class")]
public string ClassName { get; set; }
Run Code Online (Sandbox Code Playgroud)

这绑定到Razor视图中的下拉列表:

@Html.DropDownListFor(o => o.ClassName, new SelectList(Model.ClassList))
@Html.ValidationMessageFor(model => model.ClassName)
Run Code Online (Sandbox Code Playgroud)

但是,我已将第一个元素设置Model.ClassList为占位符字符串"Select one".如果用户在没有选择类的情况下提交表单,则会将其注册为有效,因为ClassName其值为"Select one".

如何使此占位符选择无效?

For*_*Two 5

您可以从Model属性中删除占位符并将其放在帮助器中:

@Html.DropDownListFor(o => o.ClassName, new SelectList(Model.ClassList), "Select one") 
Run Code Online (Sandbox Code Playgroud)