【问题标题】:MVC RenderAction return only renders partial partMVC RenderAction 返回仅渲染部分部分
【发布时间】:2015-06-30 08:49:45
【问题描述】:

我有这个联系表单,我想在 MVC 5.x (razor viewengine) 的两个页面(两个视图)上使用它所以我把表单放在一个名为 _Contact 的局部视图中,并且我读到 RenderAction 是最好的方法如果您的模型中没有局部视图所需的数据,并且它更独立(与视图的其余部分分开)

所以我这样称呼它:

@{ Html.RenderAction("SendMail", "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))

【问题讨论】:

  • 可能是因为您在 GET 或 POST 的情况下返回了 PartialView

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


【解决方案1】:

对于您当前的代码,它不会按预期工作,因为当您发布表单时,它会返回 Partial View not complete View。如果您只想获得部分视图,则必须通过 Ajax 提交表单。

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

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

ASP.NET MVC Partial view ajax post?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-02
    • 1970-01-01
    • 1970-01-01
    • 2012-06-20
    • 2014-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多