MVC RenderAction返回仅渲染部分部分

时间:2015-06-30 08:49:46

标签: asp.net-mvc razor model-view-controller

我有这个联系表单,我想在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))

1 个答案:

答案 0 :(得分:3)

它对您当前的代码无法正常工作,因为当您发布表单时,它会返回Partial View未完成View。如果您只想获得部分视图,那么您必须通过Ajax提交表单。

在ajax的成功处理程序中,您将获得部分视图的HTML,并且可以放入部分视图容器的DIV标记。

此链接可让您更好地了解通过Ajax发布部分视图。

ASP.NET MVC Partial view ajax post?