自引用模型MVC 4

时间:2016-07-21 20:50:20

标签: asp.net-mvc asp.net-mvc-4

我有一个包含子组件列表的组件:

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,但我不知道我需要改变什么。我需要改变或做什么?感谢

0 个答案:

没有答案