我的控制器上装有[HandleError]
和[HandleError(ExceptionType=typeof(CustomException), View="CustomView")]
。我有来自多个控制器的多个局部视图的视图,所以我们使用<% RenderAction(...) %>
显示我们的部分视图,但现在我们有一个案例,我们的渲染动作是抛出一个CustomException。我在OnException
内覆盖HandleErrorAttribute
CustomException
,System.Web.HttpUnhandledException
被调用(两次因某种原因),然后再Error.aspx
两次,然后被重定向到默认{{} 1}}页面而不是CustomView
应该出现此错误。
此外,如果我删除[HandleError]
但保留[HandleError(ExceptionType=typeof(CustomException), View="CustomView")]
,HandleErrorAttribute.OnException
覆盖永远不会触发。
如何从呈现局部视图的操作中抛出CustomException类型,并且仍然将应用程序重定向到我的CustomView?
答案 0 :(得分:0)
我不确定为什么异常如此之深,但我还是将其添加到OnException
HandleErrorAttribute
内的if (filterContext.Exception.InnerException != null &&
filterContext.Exception.InnerException.InnerException != null &&
filterContext.Exception.InnerException.InnerException.InnerException != null &&
filterContext.Exception.InnerException.InnerException.InnerException.GetType() == typeof(CustomException))
{
filterContext.Exception = filterContext.Exception.InnerException.InnerException.InnerException;
View = "CustomView";
}
{{1}}