私は MVC4 と EF Code First で遊んでいますが、DropDownList を取得してモデル タイプの外部キーを更新するのに問題があります。
ここに私のモデルがあります:
public class Customer
{
public int CustomerID { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
public class Party
{
public int PartyID { get; set; }
public virtual Customer Host { get; set; }
public string Location { get; set; }
public DateTime Date { get; set; }
}
したがって、パーティーにHost
はCustomer
GET メソッドのコントローラーでは/Party/Create
、ViewBag で顧客のリストを渡しています。
ViewBag.Customers = new SelectList(db.Customers, "CustomerID", "FirstName");
そして、ビューでこれを DropDownList としてレンダリングしています:
@Html.DropDownListFor(model => model.Host, ViewBag.Customers as SelectList, String.Empty)
これはすべて正常に機能し、ドロップダウンの顧客リストから選択できます。ただし、フォームを送信すると、/Party/Create POST メソッドはデータを挿入しませんModelState
。有効でないためです。を見ると、選択した Customer の が存在ModelState
することがわかりますがCustomerID
、文字列から型のオブジェクトへの変換に失敗していますCustomer
私は何を逃したのですか?