如何将默认项添加到 MVC 中的 EnumDropDownList?
How to add a default item to an EnumDropDownList in MVC?
我是 MVC 的新手,我遇到了一些在网络表单中对我来说小菜一碟的问题。所以我有一个部门下拉列表,部门是在一个枚举中找到的。所以我认为下拉列表如下所示:
<div class="form-group">
@Html.LabelFor(model => model.Department, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EnumDropDownListFor(model => model.Department, "Select a Department", htmlAttributes: new { @class = "form-control" })
@Html.ValidationMessageFor(model => model.Department, "", new { @class = "text-danger" })
</div>
</div>
添加 "Select a Department" 文本确实会在下拉列表中包含该选项,但是当页面加载时,并没有选择该选项,而是选择了枚举中的第一个部门。如何才能在页面加载时选择 "default" 选项?
我确定我的下一个问题是如何验证是否选择了其他一些项目(即必填字段验证)。
谢谢!
此答案显示了如何进行选定值和验证:Html.EnumDropdownListFor: Showing a default text
在 MVC 中进行验证时,您通常使用模型中的属性来执行此操作,例如[Required]
您的模型 属性 可能不是 Nullable
。这意味着它将始终被初始化为枚举的第一个值。
如果您的模型 属性 看起来像这样:
public MyEnum { get; set; }
改成这样:
[Required] //Require one of the values is selected i.e. value is not null
public Nullable<MyEnum> { get; set; }
这是一个非常普遍的问题,与要求值类型具有值集有关。一种简单的方法是使其成为 Nullable
并检查它是否为空。否则值类型将只有其默认值。
我是 MVC 的新手,我遇到了一些在网络表单中对我来说小菜一碟的问题。所以我有一个部门下拉列表,部门是在一个枚举中找到的。所以我认为下拉列表如下所示:
<div class="form-group">
@Html.LabelFor(model => model.Department, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EnumDropDownListFor(model => model.Department, "Select a Department", htmlAttributes: new { @class = "form-control" })
@Html.ValidationMessageFor(model => model.Department, "", new { @class = "text-danger" })
</div>
</div>
添加 "Select a Department" 文本确实会在下拉列表中包含该选项,但是当页面加载时,并没有选择该选项,而是选择了枚举中的第一个部门。如何才能在页面加载时选择 "default" 选项?
我确定我的下一个问题是如何验证是否选择了其他一些项目(即必填字段验证)。
谢谢!
此答案显示了如何进行选定值和验证:Html.EnumDropdownListFor: Showing a default text
在 MVC 中进行验证时,您通常使用模型中的属性来执行此操作,例如[Required]
您的模型 属性 可能不是 Nullable
。这意味着它将始终被初始化为枚举的第一个值。
如果您的模型 属性 看起来像这样:
public MyEnum { get; set; }
改成这样:
[Required] //Require one of the values is selected i.e. value is not null
public Nullable<MyEnum> { get; set; }
这是一个非常普遍的问题,与要求值类型具有值集有关。一种简单的方法是使其成为 Nullable
并检查它是否为空。否则值类型将只有其默认值。