假設我有一個parent.cshtml視圖和一個parentModel,以及一個child.cshtml視圖和一個childModel。 這個孩子的動作是[ChildActionOnly]
,呈現在parent.cshtml:@Html.Action("ChildAction")
。現在MVC父級和子級嵌套視圖返回模型
,在控制器/ ParentAction
public ActionResult ParentAction() {return View();}
[HttpPost]
public ActionResult ParentAction(ParentModel parentmodel) {
if(!ModelState.IsValid) {
...
ModelState.AddModelError("", "parent view has an error");
}
return View(parentmodel); // pass the ball back to user
}
在控制器/ ChildAction
[ChildActionOnly]
public ActionResult ChildAction() {return View();}
[HttpPost]
public ActionResult ChildAction(ChildModel childmodel) {
if(!ModelState.IsValid) {
...
ModelState.AddModelError("", "child view has an error");
}
//??? return ParentView(parentmodel, childmodel) ??? how do i do this???
}
在孩子的動作,我怎麼回ParentView(也呈現ChildView),並保留他們的模型中的數據?
編輯:-----
我的觀點是如何不這樣做。來自子動作的return View(childmodel);
不會讓我們看到我們想看到的內容,因爲它只會給我們提供僅包含子視圖的「部分」頁面,父項部分缺失。 RedirectToAction("ParentAction");
會再次給我們充分的看法,但它會失去模型。不知道如何處理嵌套視圖中的返回模型。那就是我卡住的地方。
嘗試將您的childModel作爲您的parentModel的子項。將childModel傳遞給子控制器,然後在父控制器內忽略它。 –
@Aleksey:child.cshtml中有一個Form和一個Submit Button來發布有關childModel的信息。 [HttpPost] public ActionResult ChildAction(ChildModel childmodel){...所以,我沒有看到你的觀點如何ParentModel環繞ChildModel?你可以展示代碼示例嗎?也許正如themarcuz所說,每個人都處理自己的模型? – Tom