我有一个包含子组件列表的组件:
public class Componente
{
public virtual int ComponentId { get; set; }
public virtual string NameComp { get; set; }
public virtual List<Subcomponent> Subcomponents { get; set; }
}
public class Subcomponent
{
public virtual int SubcomponentId { get; set; }
public virtual int ParentId { get; set; }
public virtual string NameSub { get; set; }
public virtual Component CompSub { get; set; }
public virtual List<Subcomponent> Children { get; set; }
}
然后我有一个视图显示组件,它们的子组件以及将来的子组件等等。
<table>
...
if (item.Subcomponents.Count != 0)
{
foreach (var x in item.Subcomponents)
{
<tr>
<td>
@Html.DisplayFor(modelItem => x.NameSub)
</td>
<td>
@Html.ActionLink("Create Subcomponent", "CreateMoreSubcomponents", "Subcomponent", new { id = x.SubcomponentId }, null)
</td>
</tr>
}
}
}
</table>
创建方法:
public ActionResult CreateMoreSubcomponents(int id)
{
var x = db.Subcomponents.FirstOrDefault(e => e.SubcomponentId == id);
if (x == null)
{
return HttpNotFound();
}
var subcomponent = new Subcomponent()
{
ParentId = x.SubcomponentId
};
return View("CreateMoreSubcomponents", subcomponent);
}
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult CreateMoreSubcomponents(Subcomponent subcomponent)
{
if (ModelState.IsValid)
{
db.Subcomponents.Add(subcomponent);
db.SaveChanges();
...
}
目标是拥有子子组件,子子组件等。但是我在这里展示的代码不起作用,它在db.SaveChanges()中给出了错误;因为它要求componentId,但我不知道我需要改变什么。我需要改变或做什么?感谢