2012-10-05 3 views

risposta

6

Penso che il modo più appropriato per farlo in MVC è con filters
MSDN fornisce una buona descrizione di essi, e ci sono decine di articoli e explanatins su di loro in rete, come ad esempio this one

EDIT This campione è ancora meglio: fornisce un semplice filtro azione, che viene poi registrato in global.asax, ed eseguito a ogni richiesta, prima che l'azione reale nel controller relevan esegue. Tale concetto consente di accedere all'oggetto richiesta e modificare ciò che si desidera prima dell'esecuzione del controller effettivo.

1

Si potrebbe mettere il codice nel costruttore del controllore. Ti piace questa:

public class FooController : Controller 
{ 
    public FooController() 
    { 
     doThings(); 
    } 
+0

Di ogni controller? Voglio che venga richiamato su ogni pagina caricata nella mia applicazione – Curt

+0

Cosa succede se ho 100 controller? Dovrò aggiungere questo ogni volta. Inoltre dovrei ricordarmi di aggiungere questo con qualsiasi nuovo controller. Non penso che questo sia molto scalabile. – Curt

+0

Sì, hai ragione. Spiacente, non ho capito che volevi questo su ogni vista della tua applicazione. La risposta del controllore di base sembra buona. – David

9

si potrebbe creare un controller di base di classe

public class BaseController : Controller 
{ 

    public BaseController() 
    { 
     // your code here 
    } 
} 

e lasciare che ogni nuovo controller del vostro impelement del controller di base come

public class MyController: BaseController 

anche io ho trovato il BaseController molto utile per memorizzare altre funzioni ho bisogno di un sacco di altri controllori