如何使用ASP.NET MVC3抛出ajax错误

如何使用ASP.NET MVC3抛出ajax错误,ajax,asp.net-mvc-3,jquery,Ajax,Asp.net Mvc 3,Jquery,我想在客户端用jQuery处理所有服务器端错误。为此,请为我的MVC3应用程序创建AxException处理属性,如下所示: public class JsonErrorHandlerAttribute : HandleErrorAttribute { public override void OnException(ExceptionContext filterContext) { filterContext.ExceptionHandled = true;

我想在客户端用jQuery处理所有服务器端错误。为此,请为我的MVC3应用程序创建AxException处理属性,如下所示:

public class JsonErrorHandlerAttribute : HandleErrorAttribute
{
    public override void OnException(ExceptionContext filterContext)
    {
        filterContext.ExceptionHandled = true;
        JavaScriptSerializer jsSerializer = new JavaScriptSerializer();
        string result = jsSerializer.Serialize(new { error = filterContext.Exception.Message });
        filterContext.HttpContext.Response.Write(result);
    }
}

但使用这种方法,它只返回正常的json响应,结果为200 OK。A不想在客户端解析它以确定它是否有错误。所以我的问题是抛出ajax错误的最佳方式是什么?

将此添加到函数中

HttpContext.Response.StatusCode = 500;

如果使用jQuery ajax,这将引发错误事件,您可以在那里做出反应。

将此添加到函数中

HttpContext.Response.StatusCode = 500;

如果您使用jQuery ajax,这将引发错误事件,您可以在那里做出反应。

请确保使用正确的代码-使用500作为“发生了不好的事情”的总体返回是不好的做法。这是一个状态代码列表:在正确的情况下选择正确的状态代码是很重要的。@Fourth:Thx,你说得对,这是应该考虑的!但为了保持简单,我认为500是可以的。请确保使用正确的代码-使用500作为“发生了不好的事情”返回的总称是不好的做法。这是一个状态代码列表:在正确的情况下选择正确的状态代码是很重要的。@Fourth:Thx,你说得对,这是应该考虑的!但为了简单起见,我认为500是可以的。