我正在使用 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有一个Host
which is aCustomer
在/Party/Create
GET 方法的控制器中,我在 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
我错过了什么?