ASP MVC 5 FilterConfig用于子文件夹中的视图的自定义异常

时间:2014-07-31 19:25:39

标签: asp.net-mvc asp.net-mvc-5

我想捕获自定义类型MissingSettingException的例外情况,并显示自定义错误页面。

我使用FilterConfig指定要显示的视图:

public class FilterConfig
{
    public static void RegisterGlobalFilters(GlobalFilterCollection filters)
    {
        filters.Add(new HandleErrorAttribute
        {
            ExceptionType = typeof(MissingSettingException),
            View = "MissingSetting",
            Order = 2
        });
        filters.Add(new HandleErrorAttribute());
    }
}

如果我将视图文件MissingSetting.cshtml保留在~/Views/Shared中的项目中,则此方法有效,但我有多个自定义错误页面,而是将它们保存在~/Views/Error/...的子文件夹中。

如果我将MissingSetting.cshtml移到我首选的位置,我无法弄清楚如何让我的过滤器显示正确的视图。我将得到一个错误页面说"处理您的请求时发生异常。此外,执行第一个异常的自定义错误页面时发生另一个异常。请求已被终止。"。我试过了:

  • View = "MissingSetting"(无变化)
  • View = "~/Error/MissingSetting"
  • View = "~/Error/MissingSetting.cshtml"
  • View = "~Error/MissingSetting"
  • View = "~Error/MissingSetting.cshtml"

有什么神奇的词汇?

1 个答案:

答案 0 :(得分:0)

这就是我所做的:

  • 将我的错误视图放入~/Views/Shared/Errors
  • 将我的过滤器定义更改为使用View = "Errors/MissingSetting"

我已经搜索到足够多,我的眼睛可能会茫然,但我没有找到任何线索,可以将我的错误视图文件夹保存在网站根目录中,或~/Views/Shared之外的任何地方。至少它们可以包含在子文件夹中。

如果有人愿意分享,还是对备用解决方案感到好奇。