2

ビューがレンダリングされたときに正しい項目と値を含む DropDownList がありますが、選択した値が指定されたエンティティ フィールド Garage 内に保存されていません。現在、保存されて返される値は、create または edit post メソッドの両方で 0 (なし) です。これは簡単なことだと思いますが、わかりません...よろしくお願いします!

モデルクラス:

public enum GarageType { None = 0, One = 1, Two = 2, Three = 3, Four = 4 }

public int Garage { get; set; }

[NotMapped]
public GarageType GarageEnumValue
{
    get { return (GarageType)Garage; }
    set{ Garage = (int)value; }
}

Control の Create メソッドと Edit メソッドはどちらも次のようになります。

var statuses = from Property.GarageType s in Enum.GetValues(typeof(Property.GarageType))
                       select new { ID = (int)s, Name = s.ToString() };
ViewBag.GarageId = new SelectList(statuses, "ID", "Name", statuses.FirstOrDefault().ID);

最後のビュー:

@Html.DropDownList("GarageId", String.Empty)
4

1 に答える 1

2

DropDownListメソッドの次のオーバーロードを使用します

@Html.DropDownList("GarageEnumValue", (SelectList)ViewBag.GarageId, String.Empty)

強く型付けされたモデルを使用している場合

@Html.DropDownListFor(m => m.GarageEnumValue, (SelectList)ViewBag.GarageId, String.Empty)

どちらの場合も最初の引数は、リストをバインドするプロパティにする必要があります。

于 2012-06-10T05:16:17.363 に答える