2010-07-01 94 views
0

假设我有一个Child和Parent对象,每个对象都有一个存储库和一个控制器。MVC将子项添加到父项

更新:家长有许多子对象。

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

public ActionResult Create() 
    { 

     return View(); 
    } 

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

     parentRepo.Save(parent); 

     return View(); 
    } 

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

1)一个解决办法是使用像孩子的URL /创建/ {idParent}

2)或甚至嵌入父ID在子所以它贴有子数据的其余部分产生的形式。

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

回答

2

我会替代1)

走在创建父的您发表的版本,可以返回一个RedirectAction创造一个孩子(和你的routeValues添加idParent)。如果您不喜欢url Child/Create/{idParent},您可以根据它与控制器设置的匹配方式以及您的上下文中的主要实体是什么来创建类似Parent/{idParent}/CreateChild的东西(Child in第一个网址,第二个网址中的父级)。

+0

)是“最佳”解决方案。仍然看起来很奇怪。自从我必须完成这个项目以来,我一起去了。 – 2010-07-02 07:11:45

0

如果这真的需要是一个2步过程,那么我不认为你的网址是错误的。 这将允许用户通过点击F5来刷新他的浏览器,并且在刷新后他仍然能够输入数据。显示子对象的错误信息也很容易。

但是我不确定如果这2步过程是必要的。如果你有机会在1个动作上构建完整的对象,它会更容易。但我只是猜测。也许它是一个设计的决定。

+0

它需要是一个两步过程,因为家长有不止一个孩子。我会更新问题以反映这一点。我在网络上看到的两个( – 2010-07-01 10:34:20