Anche se possiamo registrare le regole di routing in qualsiasi parte dell'applicazione, è buona norma inserire il codice all'interno del file Global.asax
, nella funzione Application_Start
. In questo modo sapremo sempre dove trovare le nostre regole di routing ed avremo inoltre la certezza che vengano generate ad ogni avvio dell'applicazione. I progetti generati da Visual Studio, inoltre, seguono questa organizzazione.
public static void RegisterRoutes() { RouteCollection routes = RouteTable.Routes; routes.MapRoute( "Default", // Nome "{controller}/{action}/{id}", // URL e parametri new { controller = "Home", // Valori di default action = "Index", id = "" } ); routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); } protected void Application_Start() { RegisterRoutes(); }
Questo codice è tratto dal file Global.asax
del progetto di esempio. Come potete vedere la funzione Application_Start
, richiamata automaticamente all'avvio dell'applicazione Web, invoca a sua volta la funzione RegisterRoutes
, creata specificatamente per aggiungere le regole di routing necessarie all'applicazione. Utilizzare una funzione dedicata non è obbligatorio, ma caldamente consigliato per mantenere ordine nel codice, specie quando si rendano necessarie molte regole di routing.
Escludere URL dal routing: IgnoreRoute
Oltre al metodo MapRoute
già visto nei dettagli, nel codice abbiamo anche la funzione IgnoreRoute, utile per impedire che un determinato URL sia gestito dal meccanismo di routing.
I casi in cui la funzione può risultare utile sono molti.Ad esempio facciamo uso di questo metodo nella nostra galleria di immagini per escludere gli URL dei file di risorsa (estensione .axd
) dalla RouteTable
:
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
Come per MapRoute
, anche in questo caso possiamo utilizzare delle espressioni per il matching degli URL e i route constraints per dichiarare dei vincoli sui parametri.