我正在使用我的枚举渲染一个下拉列表框,我只有3个选项,但由于某种原因,它显示了四个。 top和default选项只是空白/空,我希望删除它。我希望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" })
感谢您的帮助。
答案 0 :(得分:9)
您的第二个参数是“选项标签”,用于设置下拉列表中的第一个项目。从文档:“默认空项目的文本”
使用不包含选项标签的重载:
@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" })
我明白了:
我在下拉列表中唯一一次获得另一个选项是当我传入一个字符串作为第二个参数时,例如“选择...”
您是否有机会使用javascript将项目添加到下拉列表中?
答案 1 :(得分:0)
我花了一些时间使上面的内容起作用,但没有成功。
我找到了另一种方法:
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;
}
答案 2 :(得分:0)
我也遇到了同样的问题。解决了这个从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" })