MVC将子项添加到父项

时间:2010-07-01 07:47:53

标签: asp.net-mvc model-view-controller parent-child

假设我有一个Child和Parent对象,每个对象都有一个存储库和一个控制器。

更新:父有很多子对象。

父母的创建控制器看起来像。要创建的帖子将使用自动生成的表单。

    public ActionResult Create()
    {

        return View();
    }

    [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult Create(Parent parent)
    {
        var parentRepo = new ParentRepository();

        parentRepo.Save(parent);

        return View();
    }

在创建父级后如何创建子项?

1)一个解决方案是使用像child / create / {idParent}

这样的网址

2)甚至将父ID嵌入到子项创建表单中,以便与其余的子数据一起发布。

两者似乎都不符合MVC的精神。

2 个答案:

答案 0 :(得分:2)

我会选择替代方案1)

在创建父级的Post版本中,您可以返回RedirectAction以创建子级(并在routeValues中添加idParent)。如果你不喜欢url Child / Create / {idParent},你可能会有类似Parent / {idParent} / CreateChild的内容,具体取决于它与你的控制器设置的匹配程度,以及你的上下文中的主要实体是什么(Child in第一个网址,第二个网址中的父网址。

答案 1 :(得分:0)

如果这个实际需要分为两个步骤,那么我认为你的网址不对。 它允许用户通过点击F5刷新他的浏览器,他仍然可以在刷新后输入数据。显示子对象的错误消息也很容易。

但如果真的需要这个两步过程,我并不感到害羞。如果你有机会在1个动作上构建完整的对象,那将更容易。但我只是在猜测。也许这是一个设计上的决定。