如何在MVC中添加一个默认项到EnumDropDownList

本文关键字:一个 默认 EnumDropDownList MVC 添加 | 更新日期: 2023-09-27 18:17:48

我是MVC的新手,我在webforms中遇到了一些对我来说是小菜一碟的事情。我有一个部门下拉列表,部门在enum中找到。所以我的视图中的下拉列表是这样的:

        <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"文本确实在下拉列表中包含该选项,但是当页面加载时,不是选择该选项,而是选择enum中的第一个部门。如何使"默认"选项在页面加载时被选中?

我确信我的下一个问题将是如何验证其他一些项目被选中(即,必填字段验证)。

谢谢!

如何在MVC中添加一个默认项到EnumDropDownList

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

这个答案显示了如何执行选中的值和验证:Html。EnumDropdownListFor:显示默认文本

对于MVC中的验证,您通常使用模型中的属性来执行此操作,例如[Required]