提交Ajax表单后,如何使用消息更新_Layout.cshtml中的DIV?

提交Ajax表单后,如何使用消息更新_Layout.cshtml中的DIV?,ajax,asp.net-mvc-3,layout,razor,validationerror,Ajax,Asp.net Mvc 3,Layout,Razor,Validationerror,目前我有一个剃须刀视图如下: @model MyApp.Web.ViewModels.MyViewModel <div id="message"></div> @using (Html.BeginForm("TotalPaymentsByMonthYear", new { reportName = "CreateTotalPaymentsByMonthYearChart" })) { ... } <div id="chartimage">

目前我有一个剃须刀
视图
如下:

@model MyApp.Web.ViewModels.MyViewModel

<div id="message"></div>

@using (Html.BeginForm("TotalPaymentsByMonthYear", new { reportName = "CreateTotalPaymentsByMonthYearChart" }))
{
    ...
}

<div id="chartimage">
    @Html.Partial("ValidationSummary")
</div>
TotalPaymentsByMonthYear.cshtml

@model MyApp.Web.ViewModels.MyViewModel

@using (@Ajax.BeginForm("TotalPaymentsByMonthYear",
        new { reportName = "CreateTotalPaymentsByMonthYearChart" },
        new AjaxOptions { UpdateTargetId = "chartimage"}))
{    
    <div class="report">

    // MyViewModel fields and validation messages...

    <input type="submit" value="Generate" />

    </div>
}

<div id="chartimage">
@Html.Partial("ValidationSummary")
</div>
<div id="message">

</div>

@RenderBody()
我想做的是:不在这个
PartialView
中显示验证错误,而是寻找一种方法,将此验证错误消息发送到我在
\u Layout.cshtml
文件中定义的DIV元素

\u Layout.cshtml

@model MyApp.Web.ViewModels.MyViewModel

@using (@Ajax.BeginForm("TotalPaymentsByMonthYear",
        new { reportName = "CreateTotalPaymentsByMonthYearChart" },
        new AjaxOptions { UpdateTargetId = "chartimage"}))
{    
    <div class="report">

    // MyViewModel fields and validation messages...

    <input type="submit" value="Generate" />

    </div>
}

<div id="chartimage">
@Html.Partial("ValidationSummary")
</div>
<div id="message">

</div>

@RenderBody()

@RenderBody()

我想异步填充这个DIV的内容。这可能吗?我怎么能做到这一点呢?

就我个人而言,我会扔掉
Ajax.
助手,然后像这样做:

@model MyApp.Web.ViewModels.MyViewModel

<div id="message"></div>

@using (Html.BeginForm("TotalPaymentsByMonthYear", new { reportName = "CreateTotalPaymentsByMonthYearChart" }))
{
    ...
}

<div id="chartimage">
    @Html.Partial("ValidationSummary")
</div>
最后,在一个单独的javascript文件中,我会悄悄地将此表单AJAXify化,在基于此自定义HTTP头的成功回调中,我会将结果注入一个或另一个部分:

$('form').submit(function () {
    $.ajax({
        url: this.action,
        type: this.method,
        data: $(this).serialize(),
        success: function (result, textStatus, jqXHR) {
            var error = jqXHR.getResponseHeader('error');
            if (error != null) {
                $('#message').html(result);
            } else {
                $('#chartimage').html(result);
            }
        }
    });
    return false;
});

好极了我这样做了,第一次尝试就神奇地工作了。。。你就是那个人。我在StackOverflow学到了很多东西。上帝保佑你的生命。@Leniel Macaferi,我很高兴能帮上忙。如果答案对你有用的话,你可以考虑把它标记为这样吗?我刚刚完成我的测试…很好很高兴接受你的回答。