Пример того, как это сделать, - использовать атрибут [Description] в вашем перечислении:
public enum DaysOfWeek
{
[Description("Monday")]
Monday = 1,
[Description("Tuesday")]
Tuesday = 2
}
Затем создайте этот класс EnumerationHelper, который позволит вам получить атрибут Description вашего перечисления:
public static class EnumerationHelper
{
//Transforms an enumeration description into a string
public static string Description<TEnum>(this TEnum enumObject)
{
Type type = enumObject.GetType();
MemberInfo[] memInfo = type.GetMember(enumObject.ToString());
if(memInfo != null && memInfo.Length > 0)
{
DescriptionAttribute[] attributes = (DescriptionAttribute[])memInfo[0].GetCustomAttributes(typeof(DescriptionAttribute), false);
if (attributes.Length > 0)
{
return attributes[0].Description;
}
}
return enumObject.ToString();
}
}
Затем вы можете запросить свой класс enum, чтобы получить значение и описание, а затем создать список SelectList. Вы должны ссылаться на EnumerationHelper в этом классе:
var listOfDaysOfWeek = (from DaysOfWeek d in Enum.GetValues(typeof(DaysOfWeek))
select new { ID = d, Description = d.Description() });
viewModel.selectListDaysOfWeek = new SelectList(listOfDaysOfWeek, "ID", "Description");
И, наконец, на ваш взгляд:
<%: Html.DropDownListFor(m => m.DayOfWeek, Model.DaysOfWeek) %>
Надеюсь, это поможет.