在我的ViewModel中,我有一个属性,可以为我的表单的下拉菜单创建一个枚举。
public enum Colors
{
[Description("Dark Red")]
DarkRed = 0,
[Description("Orange")]
Orange = 1,
[Description("Blue")]
Blue = 2
}
我的助手回归:
<select id="ddlColor">
<option value="DarkRed">Dark Red</option>
<option value="Orange">Orange</option>
<option value="Blue">Blue</option>
</select>
但是,当我在模型中调用属性时,我只获取名称而不是值,例如 DarkRed 而非 0 。
model.Selections = InsertForm(model.Color);
如何在模型引用中转换它,以便从枚举中获取值?
答案 0 :(得分:6)
您可能必须像这样投射价值: -
var value = (int)model.Color;
注意: - 强>
所有枚举类型都有一个基础类型,除了char之外,它可以是任何整数类型。
答案 1 :(得分:0)
您可以轻松地将其投射到int
。
默认情况下,枚举为Int32
。
所以你可以说
var value = (int)model.Color;
由于您使用的是asp.net mvc,我将假设model.Selections为List<SelectListItem>
。
见下文。
public List<SelectListItem> GetList<TEnum>() where TEnum : struct
{
var items = new List<SelectListItem>();
foreach (int value in Enum.GetValues(typeof(TEnum)))
{
items.Add(new SelectListItem
{
Text = Enum.GetName(typeof(TEnum), value),
Value = value
});
}
return items;
}
您现在可以说model.Selections = GetList<Color>();