繁体   English   中英

在AJAX调用后如何重定向到“错误”视图页面?

[英]How do I redirect to the “Error” view page after an AJAX call?

我有一个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方法重定向到错误视图,就像我希望错误视图页面处理所有错误一样?

您可以像这样附加全局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";
     }
   });
 });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM