2013-03-19 3 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()); 
} 
Смежные вопросы