MVC3 Multiple PartialViews in one View

2019-10-31 14:02发布

提供的答案在这里正是我有事情。 但是,当我点击提交在任partialview,产量仅仅为PartialView的HTML! 我是新来MVC3,所以我敢肯定,我只是失去了一些东西,我应该已经知道。

 public ActionResult CreateV2Worksheet()
    {
        return PartialView("_NewV2WorksheetInput", new NewV2WorksheetInputModel());
    }

    [HttpPost]
    public ActionResult CreateV2Worksheet(NewV2WorksheetInputModel pNewV2Input)
    {
        if (ModelState.IsValid)
        {
            ModelState.AddModelError("ScreeningNumber", "random server err");
            return PartialView("_NewV2WorksheetInput", pNewV2Input);    
        }

        return PartialView("_NewV2WorksheetInput", pNewV2Input);
    }

Answer 1:

我会假设你不通过AJAX提交,所以这样你做一个完整的回发。 在这种情况下,你的输出是有道理的:您发布的局部视图,然后你得到的回复是针对局部视图,因为,一旦后期开始,你的HTML状态消失的HTML。 谐音只是谐音..你不能张贴到局部,并期望得到完整的输出返回。

我建议要么张贴到呈现整个页面的动作,或有部分呈现为完整页面视图( return FullPageView( someData ); ),或做一个重定向到一个全页视图( return Redirect( "FullPageview" ); )。

或者,您可以通过AJAX发布,并返回一个JsonResult然后处理客户端(jQuery的,等等)上的任何用户界面的变化。 你应该能够做到这一点使用Ajax.BeginForm()..但是这不是我个人使用,因此无法帮助那里。 有一个帖子在这里 ,说明如何采取原始部分输出和更新UI。 另一种方法是,以与返回对象JsonResult错误处理并且这样,和解析。 IE

return Json( someReturnObjectThatYouDefinedThatMayAlsoHaveAnErrorState );



Answer 2:

使用return View("_NewV2WorksheetInput", pNewV2Input);

而不是return PartialView("_NewV2WorksheetInput", pNewV2Input);

然后,局部视图会被渲染成你用你的当前页面的布局。 如果你要渲染的局部视图到另一个布局,把这个你PartialView的顶部。

@{
      Layout="~/Views/Shared/<Layout Name>.cshtml"
}


文章来源: MVC3 Multiple PartialViews in one View