7

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

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

4

2 回答 2

7

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

var value = (int)model.Color;

笔记:-

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

于 2013-09-19T13:48:54.653 回答
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>();

于 2013-09-19T13:48:01.590 回答