将ExceptionFilterAttribute限制为一个特定的MVC区域

时间:2013-03-19 06:58:41

标签: c# asp.net-mvc asp.net-mvc-areas filterattribute

在我的项目中,我有不同的领域。我添加了一个 ExceptionFilterAttribute 来处理错误(自定义)。我不想手动将此属性添加到所有控制器,我想将此属性注册到特定区域,因此ExceptionFilterAttribute将自动运行该区域中的所有控制器

任何建议

1 个答案:

答案 0 :(得分:3)

无法将动作过滤器应用于某个区域。您可以编写自定义异常过滤器属性,然后将其应用为全局操作过滤器:

public class AdminAreaHandleErrorAttribute: HandleErrorAttribute
{
    public override void OnException(ExceptionContext filterContext)
    {
        var area = filterContext.RouteData.Values["area"] as string;
        if (string.Equals(area, "Admin", StringComparison.InvariantCultureIgnoreCase))
        {
            base.OnException(filterContext);
        }
    }
}

然后注册为全局过滤器:

public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
    filters.Add(new AdminAreaHandleError());
}