Domanda

mi sono imbattuto in un codice di esempio MVC3 che aveva seguito nel file 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)
}

Sia MyProvider1 e MyProvider2 sono implementati con IResultFilter, e mi sono confuso perché uno di essi viene aggiunto FilterProviders e l'altro è registrato come un filtro globale.

Perché e quando dovremmo aggiungere filtri personalizzati su FilterProvider, e perché e quando dovremmo registrarli come filtri globali?

È stato utile?

Soluzione

Quando si aggiunge un filtro per il filtro GlobalFilters.Filters otterrà eseguito per ogni richiesta.

Quando si aggiunge un IFilterProvider al FilterProviders.Providers il provider del filtro avranno la possibilità di decidere se un particolare filtro si applica alla richiesta corrente.

FilterProviders offre un maggiore controllo, mentre GlobalFilters rende facile registrare un filtro per l'intero sito.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top