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

时间:2011-09-17 19:02:42

标签: asp.net-mvc-3 asp.net-ajax

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

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

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

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

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

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

谢谢!

1 个答案:

答案 0 :(得分:11)

  

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

是的,ASP.NET MVC 3使用不显眼的jQuery用于AJAX,与使用Microsoft*.js的先前版本相反。所以传递给错误处理程序的第一个参数是jqXHR对象。

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

alert(ajaxContext.status);
alert(ajaxContext.responseText);