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 に答える