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

Asp.net mvc 是否有任何内置的助手方法可以在下拉列表中显示枚举?,asp.net-mvc,html-helper,Asp.net Mvc,Html Helper,我需要在dropdownlist中显示枚举,并在我的管理页面中预先填充它们 是否已经有任何内置的html帮助程序 asp.net mvc来自 给定枚举 public enum Status { Current = 1, Pending = 2, Cancelled = 3 } 以及可拓方法 public static SelectList ToSelectList<TEnum>(this TEnum enumObj) { var values

我需要在dropdownlist中显示枚举,并在我的管理页面中预先填充它们

是否已经有任何内置的html帮助程序

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);
}

给定枚举

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);
}

作为Robert Harvey答案的推论,使用DescriptionAttribute将允许您处理包含多个单词的枚举值,例如:

public enum MyEnum {
  [Description("Not Applicable")]
  NotApplicable,
  Yes,
  No
}

如果存在DescriptionAttribute值,则可以获取该值,然后使用descriptionAttributeText??enumMemberName作为下拉列表的显示文本。

作为Robert Harvey答案的推论,使用DescriptionAttribute将允许您处理包含多个单词的enum值,例如:

public enum MyEnum {
  [Description("Not Applicable")]
  NotApplicable,
  Yes,
  No
}

如果存在DescriptionAttribute值,则可以获取该值,然后使用descriptionAttributeText??enumMemberName作为下拉列表的显示文本。

请参见此处:请参见此处:是否有方法将ID值置于“选择选项值”属性中,而不是文本中?如果我理解正确:返回新的SelectListvalues、ID、ID、enumObj;尝试过之后,它仍然显示option value=current,I want value=1是否有办法将ID值置于“选择选项值”属性中,而不是文本中?如果我理解正确:返回新的SelectListvalues,ID,ID,enumObj;尝试过之后,它仍然显示选项value=current,我希望value=1