Question

Je suis tombé sur un exemple de code MVC3 qui avait suit dans le fichier 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)
}

Les deux MyProvider1 et MyProvider2 sont mis en œuvre avec IResultFilter, et je suis confus pourquoi l'un d'entre eux est ajouté à FilterProviders et l'autre est enregistré en tant que filtre global.

Pourquoi et quand doit-on ajouter des filtres personnalisés sur FilterProvider, et pourquoi et quand devrions-nous les enregistrer en tant que filtres globaux?

Était-ce utile?

La solution

Lorsque vous ajoutez un filtre à GlobalFilters.Filters le filtre sont exécutées pour chaque demande.

Lorsque vous ajoutez un IFilterProvider à FilterProviders.Providers le fournisseur de filtre aura une chance de décider si un filtre particulier s'applique à la demande actuelle.

FilterProviders vous donne un meilleur contrôle tout en GlobalFilters rend facile d'enregistrer un filtre pour l'ensemble du site.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top