我有一些枚举,我需要在下拉列表中显示,并在我的管理页面中预先填充它们。
是否有内置的html助手?
(asp.net mvc)
答案 0 :(得分:5)
来自How do you create a dropdownlist from an enum in ASP.NET MVC?
鉴于枚举
public enum Status
{
Current = 1,
Pending = 2,
Cancelled = 3
}
和扩展方法
public static SelectList ToSelectList<TEnum>(this TEnum enumObj)
{
var values = from TEnum e in Enum.GetValues(typeof(TEnum))
select new { ID = e, Name = e.ToString() };
return new SelectList(values, "Id", "Name", enumObj);
}
这允许你写:
ViewData["taskStatus"] = task.Status.ToSelectList();
答案 1 :(得分:2)
作为Robert Harvey的答案的必然结果,使用DescriptionAttribute将允许您处理具有多个单词的枚举值,例如:
public enum MyEnum {
[Description("Not Applicable")]
NotApplicable,
Yes,
No
}
您可以获取DescriptionAttribute
值(如果存在),然后使用descriptionAttributeText ?? enumMemberName
作为下拉列表的显示文字。