filters.Add vs FilterProviders.Providers.Add - PullRequest
3 голосов
/ 15 марта 2011

Я наткнулся на пример кода MVC3, который имел следующий файл Global.asax:

public static void RegisterGlobalFilters(....)
{
    filters.Add(new MyFilter1());
    ....
    var provider = new MyFilterProvider();
    provider.Add(c => c.HttpContext.IsDebuggingEnabled ? new MyProvider2() : null);
    FilterProviders.Providers.Add(provider)
}

И MyProvider1, и MyProvider2 реализованы с IResultFilter, и я не понимаю, почемуиз них добавляется в FilterProviders, а другой регистрируется как глобальный фильтр.

Почему и когда мы должны добавлять пользовательские фильтры в FilterProvider, и почему и когда мы должны регистрировать их как глобальные фильтры?

1 Ответ

9 голосов
/ 15 марта 2011

Когда вы добавляете фильтр к GlobalFilters.Filters, фильтр будет выполняться для каждого запроса.

Когда вы добавляете IFilterProvider к FilterProviders.Providers, у поставщика фильтров будет возможность решить, является ли конкретныйфильтр применяется к текущему запросу.

FilterProviders дает вам больший контроль, а GlobalFilters упрощает регистрацию фильтра для всего сайта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...