2016-03-15 39 views
1

我有一個Ajax調用控制器中的HTTP Post Action方法。如何在AJAX調用後重定向到「錯誤」視圖頁面?

此操作方法拋出一個簡單的異常消息。

我有我自己的自定義處理程序裝飾控制器以下屬性:

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方法重定向到錯誤視圖,因爲我想錯誤視圖頁來處理所有錯誤?

+0

AJAX的全部目的是留在同一頁上,和Ajax調用不重定向。 –

+1

如果動作拋出錯誤,'ajax失敗事件'將觸發,在該編寫代碼中重定向到錯誤頁面 – anand

回答

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"; 
    } 
    }); 
}); 
相關問題