我有这个联系表单,我想在MVC 5.x中使用两个页面(两个视图)(razor viewengine)所以我把表单放在一个名为_Contact的partialview中,我已经读过RenderAction是最好的方法如果您没有模型中部分视图所需的数据,并且它更独立(与视图的其余部分分开)
所以我称之为:
@{ Html.RenderAction("SendMail", "Uk");}
My Uk控制器有以下两种方法:
[HttpGet]
public PartialViewResult SendMail()
{
return PartialView("_Contact");
}
[HttpPost]
public PartialViewResult SendMail(FormCollection fc)
{
// send mail using values out of the form (sorry did not feel like building a complete model for it
ViewBag.Succeed = true;
// if smtpclient could not reach server etc. it returns false
return PartialView("_Contact");
}
一切正常,但只会呈现PartialView
,而不会在我调用RenderAction
的占位符上呈现。它工作得很好,但在帖子之后它只显示部分视图而不是"父视图"和共享的布局视图等。我希望我明确表达自己。如果我需要添加更多信息,请告诉我。
这是我共享视图中的BeginForm
:
using (Html.BeginForm("SendMail", "Uk", FormMethod.Post))
答案 0 :(得分:3)
它对您当前的代码无法正常工作,因为当您发布表单时,它会返回Partial View
未完成View
。如果您只想获得部分视图,那么您必须通过Ajax提交表单。
在ajax的成功处理程序中,您将获得部分视图的HTML,并且可以放入部分视图容器的DIV标记。
此链接可让您更好地了解通过Ajax发布部分视图。