【发布时间】:2016-03-15 15:18:33
【问题描述】:
我有一个 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 的全部目的是保持在同一页面上,并且 ajax 调用不会重定向。
-
如果动作抛出错误,
ajax failure event将触发,在此编写代码以重定向到错误页面
标签: c# jquery ajax asp.net-mvc