如何将默认项添加到MVC中的EnumDropDownList?

时间:2016-11-12 17:09:16

标签: c# asp.net asp.net-mvc entity-framework asp.net-mvc-5.2

我是MVC的新手,我遇到了一些问题,这对于我来说在webforms中对我来说是件小事。所以我有一个部门下拉列表,这些部门都在枚举中找到。所以我视图中的下拉列表如下所示:

        <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>

添加&#34;选择部门&#34;文本确实在下拉列表中包含该选项,但是当页面加载时,而不是选择该选项时,将选择枚举中的第一个部门。如何使它成为&#34;默认&#34;页面加载时选择了选项吗?

我确定我的下一个问题是如何验证是否已选择其他项目(即必填字段验证)。

谢谢!

2 个答案:

答案 0 :(得分:1)

此答案显示了如何执行所选值和验证:Html.EnumDropdownListFor: Showing a default text

在MVC中进行验证时,通常使用模型中的属性执行此操作,例如[Required]

答案 1 :(得分:1)

您的模型属性可能不是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并检查它是否为空。否则,值类型将具有其默认值。