2010-07-01 92 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