从EnumDropDownListFor删除空条目

时间:2019-02-13 08:35:41

标签: asp.net-mvc model-view-controller enums html-helper

我想从我的EnumDropDownListfor中删除Blank / Empty条目-已在线搜索并尝试了以下链接,但似乎无济于事

Remove blank/empty entry at top of EnumDropDownListFor box

Remove blank entry from EnumDropDownListFor(...)?

视图中的代码:-

<h1>

模型中的代码:-

<td>
@Html.EnumDropDownListFor(model => model.Actions, new { @id = "actions", @class = "form-control" })
</td>

控制器中的枚举:-

[Required]
    [Range(1, int.MaxValue, ErrorMessage = "Select an Action")]
    [Display(Name = "Actions")]
    public ItemTypes Actions { get; set; }

Dropdown渲染如下:-

enter image description here

1 个答案:

答案 0 :(得分:1)

听起来像您的问题是用开始索引1定义的枚举:

public enum ItemTypes
{
    Add = 1,
    Remove = 2
}

由于没有在枚举上方的索引0内指定任何枚举数,因此帮助程序在SelectListItem集合列表内包括零索引,因此空选项显示为默认选择项(请记住,枚举和集合都使用基于零的索引,因此第一项的索引为零)。

您都可以定义一个索引为0的枚举数来设置默认的选定值:

public enum ItemTypes
{
    Nothing = 0,
    Add = 1,
    Remove = 2
}

或者使用标准的DropDownListFor助手,以及从SelectListItem定义的其他属性来绑定枚举值:

模型

public List<SelectListItem> ActionList { get; set; }

控制器

ActionList = Enum.GetNames(typeof(ItemTypes)).Select(x => new SelectListItem { Text = x, Value = x }).ToList();

查看

@Html.DropDownListFor(model => model.Actions, Model.ActionList, new { @id = "actions", @class = "form-control" })

参考:

C# Enumeration Types (MS Docs)