提交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,我很高兴能帮上忙。如果答案对你有用的话,你可以考虑把它标记为这样吗?我刚刚完成我的测试…很好很高兴接受你的回答。