MVC2处理RenderAction的异常

时间:2010-10-28 20:50:12

标签: asp.net-mvc exception-handling

我的控制器上装有[HandleError][HandleError(ExceptionType=typeof(CustomException), View="CustomView")]。我有来自多个控制器的多个局部视图的视图,所以我们使用<% RenderAction(...) %>显示我们的部分视图,但现在我们有一个案例,我们的渲染动作是抛出一个CustomException。我在OnException内覆盖HandleErrorAttribute CustomExceptionSystem.Web.HttpUnhandledException被调用(两次因某种原因),然后再Error.aspx两次,然后被重定向到默认{{} 1}}页面而不是CustomView应该出现此错误。

此外,如果我删除[HandleError]但保留[HandleError(ExceptionType=typeof(CustomException), View="CustomView")]HandleErrorAttribute.OnException覆盖永远不会触发。

如何从呈现局部视图的操作中抛出CustomException类型,并且仍然将应用程序重定向到我的CustomView?

1 个答案:

答案 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}}