提供的答案here正是我所做的。但是当我在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);
}
答案 0 :(得分:1)
我假设您没有通过AJAX提交,因此您正在进行完整的回发。在这种情况下,你的输出是有意义的:你发布到局部视图,然后你回来的是部分视图的html,因为一旦发布帖子,你的html状态就消失了。部分只是部分...你不能发布到部分并期望得到返回的完整输出。
我建议发布到呈现整个页面的Action,或者让部分呈现完整页面视图(return FullPageView( someData );
),或者重定向到整页视图({{1} })。
或者,您可以通过ajax发布并返回return Redirect( "FullPageview" );
然后处理客户端上的任何UI更改(jquery等)。你应该可以使用Ajax.BeginForm()来做到这一点..但这不是我个人使用的东西所以无法帮助那里。有一篇帖子here显示了如何获取原始部分输出并更新UI。另一种方法是返回一个带有JsonResult
的对象,并进行错误处理等,并解析它。即。
JsonResult
答案 1 :(得分:0)
使用return View("_NewV2WorksheetInput", pNewV2Input);
而不是return PartialView("_NewV2WorksheetInput", pNewV2Input);
。
然后,部分视图将呈现到您当前页面使用的布局中。如果要将局部视图渲染到另一个布局中,请将其放在PartialView上。
@{
Layout="~/Views/Shared/<Layout Name>.cshtml"
}