Представьте, что у меня есть перечисление, подобное этому (просто в качестве примера):
public enum Direction{
Horizontal = 0,
Vertical = 1,
Diagonal = 2
}
Как мне написать подпрограмму для получения этих значений в System.Web.Mvc.SelectList, если в будущем содержимое перечисления может измениться? Я хочу получить имя каждого перечисления в качестве текста параметра и его значение в качестве текста значения, например:
<select>
<option value="0">Horizontal</option>
<option value="1">Vertical</option>
<option value="2">Diagonal</option>
</select>
Это лучшее, что я могу придумать:
public static SelectList GetDirectionSelectList()
{
Array values = Enum.GetValues(typeof(Direction));
List<ListItem> items = new List<ListItem>(values.Length);
foreach (var i in values)
{
items.Add(new ListItem
{
Text = Enum.GetName(typeof(Direction), i),
Value = i.ToString()
});
}
return new SelectList(items);
}
Однако при этом всегда отображается текст параметра «System.Web.Mvc.ListItem». Отладка через это также показывает мне, что Enum.GetValues () возвращает 'Horizontal, Vertical' и т. Д. Вместо 0, 1, как я и ожидал, что заставляет меня задуматься, в чем разница между Enum.GetName () и Enum. ПолучитьЗначение (). * * 1 010