filters.Add VS FilterProviders.Providers.Add [英] filters.Add vs FilterProviders.Providers.Add
问题描述
我碰到它已在的Global.asax
文件承接来样MVC3 code来了
I came across a sample MVC3 code which had following in the Global.asax
file:
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
,另一种是注册为一个全球性的过滤器。
Both MyProvider1
and MyProvider2
are implemented with IResultFilter
, and I am confused why one of them is added to FilterProviders
and the other one is registered as a global filter.
为什么我们何时应该 FilterProvider
添加自定义过滤器,为什么我们时应把它们注册为全局过滤器?
Why and when should we add custom filters on FilterProvider
, and why and when should we register them as global filters?
推荐答案
在一个过滤器添加到 GlobalFilters.Filters
过滤器将获得每一个请求执行。
When you add a filter to GlobalFilters.Filters
the filter will get executed for every request.
当您添加 IFilterProvider
到 FilterProviders.Providers
过滤器供应商将有机会决定是否特定的过滤器适用于当前的要求。
When you add an IFilterProvider
to FilterProviders.Providers
the filter provider will have a chance to decide whether a particular filter applies to the current request.
FilterProviders
为您提供了更大的控制权,而 GlobalFilters
可以很容易地注册了整个网站的过滤器。
FilterProviders
gives you greater control while GlobalFilters
makes it easy to register a filter for the entire site.
这篇关于filters.Add VS FilterProviders.Providers.Add的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!