Spesso capita di dover eseguire dei routing dinamici all’interno delle applicazioni sviluppate con MVC3 e MVC4 della Microsoft, e molte volte non è possibile eseguire direttamente una redirect, come nel mio caso specifico, dove dovevo eseguire un redirect all’interno del Global.asax, durante la fase di Application_EndRequest,senza scatenare un loop infinito di redirect.
Ci vengono in aiuto le api dell’MVC ed in particolare la RouteData, che permette di passare tutti i dati di chiamata ad una particolare action di uno specifico Controller, instanziato programmaticamente:
1 2 3 4 5 6 7 | var rd = new RouteData(); rd.DataTokens["area"] = null; rd.Values["controller"] = "NomeController"; rd.Values["action"] = "NomeAction"; IController c = new NomeController(); c.Execute(new RequestContext(new HttpContextWrapper(Context), rd)); |