Come abbiamo già visto parlando dei controller, ASP.NET MVC, a causa della sua particolare struttura, necessita di un meccanismo in grado di associare un URL non più ad un file fisico, ma ad una determinata azione. Abbiamo anche visto che queste associazioni sono convenzionali e legate ai nomi delle azioni.
Possiamo ulteriormente governare questo meccanismo e istruire ASP.NET definendo un insieme di regole che permettano l'associazione tra URL e controller. È possibile aggiungere o eliminare queste regole di routing a nostro piacimento, grazie alla classe RouteTable
, definita nel namespace System.Web.Routing
(framework .NET 3.5 Service Pack 1).
Ma come organizzare gli URL in modo che contengano tutte le informazioni che ci interessano? Nella tabella che segue abbiamo alcuni URL strutturati in modo da corrispondere a differenti operazioni sulla nostra galleria di immagini:
URL | Risultato |
---|---|
http://www.miosito.com/gallery/ |
Home page della galleria, lista di tutte le immagini |
http://www.miosito.com/gallery/detail/1 |
Informazione sull'immagine con ID uguale a 1 |
http://www.miosito.com/gallery/create/ |
Creazione di una nuova immagine |
Negli URL precedenti abbiamo specificato: il controller (gallery
); il nome dell'azione (detail
e create
); e nel secondo URL anche un paramentro (1) che rappresenta l'ID dell'immagine richiesto dall'azione detail
.
Tutti gli URL visti fino ad ora hanno quindi una struttura del tipo:
{controller}/{action}/{id}
Le parti della stringa racchiuse tra parentesi graffe ({
e }
) indicano i parametri che ci interessano; nel nostro caso controller
, action
e id
.
Con questa espressione siamo quindi in grado di gestire tutte le richieste per le azioni non soltanto del nostro controller Gallery
, ma anche di tutti gli altri controller. Come vedremo nella prossima lezione ASP.NET MVC utilizza una sintassi di questo tipo per specificare le regole di routing.