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

所以一个Party有一个Hostwhich is aCustomer

/Party/CreateGET 方法的控制器中,我在 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它无效。查看ModelState,我可以看到CustomerID所选 Customer 的存在,但它未能从 String 转换为类型的对象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 回答