Frage

Ich stieß auf einen Beispiel -MVC3 Global.asax Datei:

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)
}

Beide MyProvider1 und MyProvider2 werden implementiert mit IResultFilter, und ich bin verwirrt, warum einer von ihnen hinzugefügt wird FilterProviders und der andere wird als globaler Filter registriert.

Warum und wann sollten wir benutzerdefinierte Filter hinzufügen FilterProvider, Und warum und wann sollten wir sie als globale Filter registrieren?

War es hilfreich?

Lösung

Wenn Sie einen Filter hinzufügen GlobalFilters.Filters Der Filter wird für jede Anfrage ausgeführt.

Wenn Sie eine hinzufügen IFilterProvider zu FilterProviders.Providers Der Filteranbieter hat die Möglichkeit zu entscheiden, ob ein bestimmter Filter für die aktuelle Anfrage gilt.

FilterProviders gibt Ihnen eine größere Kontrolle während GlobalFilters Erleichtert es einfach, einen Filter für die gesamte Website zu registrieren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top