删除 EnumDropDownListFor 框顶部的 blank/empty 条目

Remove blank/empty entry at top of EnumDropDownListFor box

我正在使用我的枚举渲染一个下拉列表框,我只有 3 个选项,但由于某种原因它显示了四个。顶部和默认选项只是 blank/empty,我希望将其删除。我希望 top/default 值为 'Option1'。

枚举:

public enum EventType
{
    [Display(Name = "Option 1")]
    Option1,

    [Display(Name = "Option 2")]
    Option2,

    [Display(Name = "Option 3")]
    Option3
}

查看:

@Html.EnumDropDownListFor(model => model.EventType, null, new { @id = "eventType", @class = "form-control" })

感谢您的帮助。

您的第二个参数是 "Option Label",用于设置下拉列表中的第一项。来自文档:"The text for a default empty item"

使用不包含选项标签的重载:

@Html.EnumDropDownListFor(model => model.EventType, new { @id = "eventType", @class = "form-control" })

更新

我刚试过你的代码。当我同时做这两件事时:

@Html.EnumDropDownListFor(model => model.EventType, null, new { @id = "eventType", @class = "form-control" })

@Html.EnumDropDownListFor(model => model.EventType, new { @id = "eventType", @class = "form-control" })

我得到:

我唯一一次在下拉列表中得到另一个选项是当我传入一个字符串作为第二个参数时,例如 "Select..."

您是否有机会使用 javascript 将项目添加到下拉列表中?

我花了一些时间让上面的工作起作用但没有成功。

我找到了另一种方法:

HTML:

@Html.DropDownList("types",
               Helper.Gettypes(),
               new { @class = "form-control", @title = "---  Choose  ---" })

代码:

    public static List<SelectListItem> Gettypes()
    {
        var enums = Enum.GetNames(typeof(WorkLogType)).ToList();

        var selectLIst = enums.Select(x => new SelectListItem {Value = x, Text = x}).ToList();

        return selectLIst;
    }

我也有相同的 problem.Solved 这个从 0 而不是 1 开始的枚举。

public enum EventType
{
[Display(Name = "Option 1")]
Option1,

[Display(Name = "Option 2")]
Option2,

[Display(Name = "Option 3")]
Option3
}

@Html.EnumDropDownListFor(model => model.EventType,      
              new {@id = "eventType", @class = "form-control"  })