如何从ASP.NET MVC属性中获取枚举值?

时间:2013-09-19 13:43:51

标签: c# asp.net-mvc enums

在我的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);

如何在模型引用中转换它,以便从枚举中获取

2 个答案:

答案 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>();