【发布时间】:2010-11-09 18:02:45
【问题描述】:
假设我有一个这样的枚举(仅作为示例):
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 之间有什么区别。获取值()。
【问题讨论】:
-
这是stackoverflow.com/questions/1102022/… 和很多很多其他的大副本。
标签: c# asp.net-mvc enums