使用Response而不是AjaxContext调用Ajax.BeginForm OnFailure

Gra*_*les 4 asp.net-ajax asp.net-mvc-3

在我的ASP.NET MVC3应用程序中编写Ajax数据输入表单时,我有一个标准的Ajax错误处理程序,类似于:

function handleAjaxError(ajaxContext) {
     var response = ajaxContext.get_response();
     var statusCode = response.get_statusCode();
     alert("Request failed, status code " + statusCode);
}
Run Code Online (Sandbox Code Playgroud)

我现在发现发送到handleAjaxError的参数不是Ajax上下文,而是Response对象本身,由于某种原因.

这可能是MVC3中已知的行为变化吗?这是表单设置,如果相关:

@using (Ajax.BeginForm("Create", "Attendance", null, new AjaxOptions
     {   OnFailure = "handleAjaxError",
         OnSuccess = "alert('success')" },  
new  { id = "frmCreateException" }))
{
    @Html.EditorFor(m => Model)
}
Run Code Online (Sandbox Code Playgroud)

控制器操作返回PartialViewResult.目前的HTTP异常是500,因为我还没有创建视图.

谢谢!

Dar*_*rov 11

这可能是MVC3中已知的行为变化吗?

是的,ASP.NET MVC 3使用不引人注目的jQuery用于AJAX的东西,与之前使用的版本相反Microsoft*.js.所以传递给错误处理程序的第一个参数是jqXHR对象.

并获取响应文本和状态代码:

alert(ajaxContext.status);
alert(ajaxContext.responseText);
Run Code Online (Sandbox Code Playgroud)