是否有任何内置的帮助方法可以在下拉列表中显示枚举?

时间:2010-01-27 16:07:41

标签: asp.net-mvc html-helper

我有一些枚举,我需要在下拉列表中显示,并在我的管理页面中预先填充它们。

是否有内置的html助手?

(asp.net mvc)

2 个答案:

答案 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作为下拉列表的显示文字。