【问题标题】:How do I get an enum value from my ASP.NET MVC property?如何从我的 ASP.NET MVC 属性中获取枚举值?
【发布时间】:2013-09-24 15:17:29
【问题描述】:

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

如何在我的模型参考中进行转换,以便从枚举中获取

【问题讨论】:

标签: c# asp.net-mvc enums


【解决方案1】:

您可以轻松地将其转换为 int

默认枚举为Int32

所以你可以说

var value = (int)model.Color;

由于您使用的是 asp.net mvc,我将假设 model.Selections 是 List&lt;SelectListItem&gt;

见下文。

  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&lt;Color&gt;();

【讨论】:

    【解决方案2】:

    您可能必须像这样转换值:-

    var value = (int)model.Color;
    

    注意:-

    所有枚举类型都有一个底层类型,可以是除char以外的任何整型。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-16
      • 2020-12-31
      • 2010-12-20
      • 1970-01-01
      • 2013-08-14
      相关资源
      最近更新 更多