如何重定向到"错误"在AJAX通话后查看页面?

时间:2016-03-15 06:24:14

标签: c# jquery ajax asp.net-mvc

我有一个Ajax在控制器中调用HTTP Post Action方法。

此操作方法抛出一条简单的异常消息。

我使用自己的自定义处理程序属性修饰了控制器,其中包含以下内容:

 public override void OnException(ExceptionContext filterContext) {

        if (!filterContext.ExceptionHandled) {
            string actionName = filterContext.RouteData.Values["action"].ToString();
            Type controllerType = filterContext.Controller.GetType();
            var method = controllerType.GetMethod(actionName);
            var returnType = method.ReturnType;
            string controllerName = filterContext.RouteData.Values["controller"].ToString();

            HandleErrorInfo model = new HandleErrorInfo(filterContext.Exception, controllerName, actionName);

            // redirect on error
            filterContext.Result = new ViewResult {
                ViewName = "Error",
                ViewData = new ViewDataDictionary<HandleErrorInfo>(model)
            };
        }

        filterContext.ExceptionHandled = true;
        filterContext.HttpContext.Response.TrySkipIisCustomErrors = true;
    }

上面的问题是由于某些原因,使用POST方法,我的页面不会被重定向到错误视图。但是,如果我调用已使用[HttpGet]修饰的动作方法,我的重定向将正常工作。

是否可以将AJAX方法重定向到错误视图,因为我希望错误视图页面能够处理所有错误?

1 个答案:

答案 0 :(得分:0)

您可以像这样附加全局ajax错误处理程序:

 $(function() {
   $(document).ajaxError(function(xhr, props) {
     if (props.status >= 200 && props.status < 300 || props.status === 304) {
       //all is well
     } else {
       alert("error");
       window.location = "/Error/CustomError";
     }
   });
 });