最佳答案
假设我有一个这样的枚举(仅作为一个示例) :
public enum Direction{
Horizontal = 0,
Vertical = 1,
Diagonal = 2
}
如何编写一个例程将这些值输入到系统中。韦伯。MVC.考虑到枚举的内容将来可能会发生变化,选择列表?我希望将每个枚举名称作为选项文本,将其值作为值文本,如下所示:
<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”。韦伯。MVC.ListItem’。通过此调试还可以看到 Enum。GetValue ()返回“水平,垂直”等,而不是我所期望的0,1,这让我想知道 Enum 之间的区别是什么。GetName ()和 Enum。GetValue ().