鉴于这些POCO课程
class MainClass{
[Key] int id {get;set;}
public string name {get;set;}
[Required]
public virtual ICollection<SubItem> subItems {get;set} // unique sub items
}
和
Class SubItem{
[Key] int id {get; set;}
public string name {get;set;}
[Required] // required is nedded. the subitem cannot exist by it's self
public MainClass parent {get; set;}
}
发布并绑定到控制器时,它全部设置,并将所有SubItems状态设置为:
public virtual ActionResult Edit([Bind()] MainClass entity) {
foreach(var subItem in entity.subItems)
db.Entry(subItem).State = System.Data.Entity.EntityState.Modified;
if (ModelState.IsValid) { // Fails here
db.Entry(entity).State = System.Data.Entity.EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Edit", new { edited = "true" });
}
}
然而,modelState包含&#34; parent不能为null&#34;每个项目的错误。 和验证失败。由于某种原因,父母&#34;属性不会自动填充。我怎么能避免它?
我正在渲染这样的视图。
@model MainClass
@Html.HiddenFor(m=>m.id)
@Html.EditorFor(m=>m.name)
@Html.EditorFor(m=>m.subItems)
SubItem有EditorTemplate
@model SubItem
@Html.HiddenFor(m=>m.id)
@Html.EditorFor(m=>m.name)
由于级联删除,需要和[Required] parent
。
没有[Required]
一切正常。并且在保存db时添加父属性。但是,迁移时会关闭级联删除。