filters.Add VS FilterProviders.Providers.Add [英] filters.Add vs FilterProviders.Providers.Add

查看:439
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆