2

私は 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; }
}

したがって、パーティーにHostCustomer

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

私は何を逃したのですか?

4

1 に答える 1

2

DropDownListを:のCustomerIDプロパティにバインドしてみてください。Host

@Html.DropDownListFor(
    model => model.Host.CustomerID, 
    ViewBag.Customers as SelectList, 
    String.Empty
)
于 2012-09-21T11:44:26.163 に答える