我正在玩MVC4和EF代码优先,我得到一个问题得到一个DropDownList来更新模型类型的外键。MVC:更新选择列表中的FK关系
这里是我的模型:
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
在控制器为/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
的对象
我错过了什么?
真棒,这是分类与'ModelState'是无效的,感谢的问题!我现在看到的问题略有不同,即它插入一个新的“客户”,而不是仅将FK关系添加到现有客户,即使该ID与现有客户匹配。无论如何,感谢您的帮助! –
为了跟上这一点,我通过明确添加一个CustomerID属性并将其装饰为'Host'导航属性的外键来解决插入问题。 –
刚刚有同样的问题。似乎有点烦人,你需要用外键来装饰模式,但哦! – Sergio