2010-07-26 18 views
5

È possibile creare un filtro azione globale che verrà automaticamente applicato a tutte le azioni in tutti i controller nell'applicazione ASP.NET MVC? Voglio qualcosa come "before_filter" definito in ApplicationController in Ruby on Rails.Filtro azione globale in ASP.NET MVC

Grazie per il vostro aiuto.

+0

È possibile provare a utilizzare la libreria [FluentFilter] (http://fluentfilters.codeplex.com/). –

risposta

3

Questo dipende davvero da cosa si vuole fare. In molti scenari, le risposte precedenti di vucetica e Adeel saranno ciò che in realtà vorrai fare. Tuttavia, nessuno dei due soddisfa i criteri elencati: automaticamente si applicano a tutte le azioni/controller.

Per fare qualcosa del genere, è necessario implementare un gestore per l'evento Application BeginRequest in Global.asax. Vedere lo MSDN documentation per ulteriori informazioni.

Aggiornamento - 27 Luglio 2010: ScottGu blogged about MVC 3 Anteprima 1, che comprende un quadro di riferimento per i filtri globali come si sta parlando. Sono registrati tramite Global.asax e possono essere applicati a tutti i controller o in base a criteri specifici.

+0

Grazie per la risposta. Per prima cosa ho pensato che avrebbe funzionato, ma dopo aver provato questo approccio ho notato che Application_BeginRequest ottiene TUTTE le richieste, comprese le richieste di .js, .css, .jpg e altre risorse per la pagina. Quindi sarebbe eseguito molte volte per una pagina e potrebbe essere un grave sovraccarico. C'è un modo semplice per filtrare solo la richiesta per il contenuto della pagina e saltare tutte le richieste .js, .css, .jpg senza analizzare l'URL richiesto? – Evgenii

+0

Potresti essere in grado di esaminare le informazioni che escono dal motore di routing per determinare se hai a che fare con un controller/azione. Onestamente, la risposta di Adeel è il modo giusto per fare qualcosa di simile, stavo solo sottolineando che questa è l'alternativa se si desidera un gestore globale automatico. – GalacticCowboy

+1

Se non si desidera attendere MVC3, il mio collega ha scritto qualcosa che usiamo per abbinare automaticamente i filtri alle azioni (sempre o in base a una condizione). Questo dipende da Windsor per IOC ma puoi sempre modificare quella parte. http://geekswithblogs.net/wesm/archive/2009/12/11/ijoined-filter.aspx – Ryan

3

Crea il tuo controller di base ed erediti da esso.

+0

Grazie, dovrebbe funzionare, ma sto cercando un approccio davvero semplice che non richieda molta codifica. – Evgenii

+2

@vucetice Si dovrebbe favorire la composizione sull'ereditarietà –

Problemi correlati