提供的答案在这里正是我有事情。 但是,当我点击提交在任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);
}
我会假设你不通过AJAX提交,所以这样你做一个完整的回发。 在这种情况下,你的输出是有道理的:您发布的局部视图,然后你得到的回复是针对局部视图,因为,一旦后期开始,你的HTML状态消失的HTML。 谐音只是谐音..你不能张贴到局部,并期望得到完整的输出返回。
我建议要么张贴到呈现整个页面的动作,或有部分呈现为完整页面视图( return FullPageView( someData );
),或做一个重定向到一个全页视图( return Redirect( "FullPageview" );
)。
或者,您可以通过AJAX发布,并返回一个JsonResult
然后处理客户端(jQuery的,等等)上的任何用户界面的变化。 你应该能够做到这一点使用Ajax.BeginForm()..但是这不是我个人使用,因此无法帮助那里。 有一个帖子在这里 ,说明如何采取原始部分输出和更新UI。 另一种方法是,以与返回对象JsonResult
错误处理并且这样,和解析。 IE
return Json( someReturnObjectThatYouDefinedThatMayAlsoHaveAnErrorState );
使用return View("_NewV2WorksheetInput", pNewV2Input);
而不是return PartialView("_NewV2WorksheetInput", pNewV2Input);
。
然后,局部视图会被渲染成你用你的当前页面的布局。 如果你要渲染的局部视图到另一个布局,把这个你PartialView的顶部。
@{
Layout="~/Views/Shared/<Layout Name>.cshtml"
}