filters.add vs filterproviders.providers.add
-
24-10-2019 - |
質問
フォローしていたサンプル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
, 、そして私はそれらの1つが追加される理由を混乱させています FilterProviders
もう1つはグローバルフィルターとして登録されています。
なぜ、いつカスタムフィルターを追加する必要があります FilterProvider
, 、そしていつ、いつそれらをグローバルフィルターとして登録すべきですか?
解決
にフィルターを追加するとき GlobalFilters.Filters
リクエストごとにフィルターが実行されます。
あなたが追加するとき IFilterProvider
に FilterProviders.Providers
フィルタープロバイダーは、特定のフィルターが現在の要求に適用されるかどうかを決定する機会があります。
FilterProviders
その間、より大きなコントロールを提供します GlobalFilters
サイト全体のフィルターを簡単に登録できます。
所属していません StackOverflow