У меня есть веб-страница asp.net-mvc, и я хочу показать выпадающий список, основанный на перечислении. Я хочу показать текст каждого элемента перечисления и идентификатор, являющийся значением int, с которым связано перечисление. Есть ли какой-нибудь элегантный способ сделать это преобразование?
Вы можете использовать LINQ:
Enum.GetValues(typeof(MyEnum)).Cast<MyEnum>().Select(v => new SelectListItem {
Text = v.ToString(),
Value = ((int)v).ToString()
}).ToList();
Вы можете использовать Enum.GetNames ()
, чтобы получить массив строк, содержащий имена элементов перечисления. Если названия ваших предметов удобны для пользователя, то этого, вероятно, будет достаточно. В противном случае вы можете создать свой собственный метод GetName ()
, который будет возвращать красивое имя для каждого элемента.
ИЛИ - если перечисление никогда (или редко) изменится, вы можете просто создать метод, который напрямую добавляет жестко запрограммированные элементы в раскрывающийся список. Это, вероятно, более эффективно (если это важно для вас).
Теперь я использовал Tuple
, но вы можете преобразовать это, чтобы использовать что угодно:
var values = Enum.GetValues(typeof(DayOfWeek))
.Cast<DayOfWeek>()
.Select(d => Tuple.Create(((int)d).ToString(), d.ToString()))
.ToList()