Существуют ли встроенные вспомогательные методы для отображения перечислений в раскрывающемся списке? - PullRequest
1 голос
/ 27 января 2010

У меня есть перечисления, которые мне нужно отобразить в выпадающем списке, и они уже предварительно заполнены на моих страницах администратора.

Есть ли уже встроенные помощники по html для этого?

(asp.net mvc)

Ответы [ 2 ]

5 голосов
/ 27 января 2010

С Как создать раскрывающийся список из перечисления в 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();
2 голосов
/ 27 января 2010

Как следствие ответа Роберта Харви, использование атрибута DescriptionAttribute позволит вам обрабатывать перечисляемые значения, состоящие из нескольких слов, например:

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

Вы можете получить значение DescriptionAttribute, если оно существует, а затем использовать descriptionAttributeText ?? enumMemberName в качестве отображаемого текста для раскрывающегося списка.

...