2013-03-19 73 views
2

在我的项目中,我有不同的区域。我添加了一个ExceptionFilterAttribute用于处理错误(自定义)。我不想这个属性手动添加到所有控制器,我想将这些属性来一个特定的区域,所以ExceptionFilterAttribute将工作将全部控制在该区域自动将ExceptionFilterAttribute限制为一个特定的MVC区域

任何建议

回答

2

有没有办法对某个区域应用操作过滤器。你可以写一个自定义异常过滤器属性,然后应用它作为一个全球性的动作过滤器:

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()); 
}