ASP.Net  »  Guide  »  Guida ASP.NET MVC 

Creare regole di routing



Tutte le regole di routing che definiamo sono salvate dalla classe RouteTable nella proprietà statica RouteTable.Routes. Visto che la lista è definita come statica siamo in grado di registrare nuove regole di routing in qualsiasi momento utilizzando il metodo MapRoute:

RouteTable.Routes.MapRoute("Default",
                           "{controller}/{action}/{id}",
                           new { controller = "Home", 
                                 action = "Index", id = "" 
                               }
                          );

La funzione accetta tre parametri:

  • il nome della regola che stiamo inserendo (nel nostro caso "Default")
  • una espressione come quella vista nella lezione precedente
  • un oggetto generico contenente valori di default che ASP.NET assegnerà ai parametri nel caso in cui questi non siano specificati nell'URL.

Siamo così in grado di gestire con una sola regola molti URL strutturati allo stesso modo ma che trasportano dati differenti: ogni volta che ASP.NET riceverà una richiesta, infatti, l'espressione verrà valutata e, nel caso in cui ci sia corrispondenza tra l'espressione e l'URL, il motore di routing estrarrà le informazioni dall'URL inserendole nei parametri specificati.

Nella seguente tabella sono inclusi alcuni URL che verificano l'espressione {controller}/{action}/{id}, compreso il valore che ASP.Net associerà ai parametri (in corsivo nel caso in cui il parametro non sia presente nell'URL e gli venga assegnato quindi il valore di default stabilito nella regola precedente).

Alcuni URL che verificano l'espressione
URL{controller}{action}{id}
http://www.miosito.com/HomeIndex-
http://www.miosito.com/galleryGalleryIndex-
http://www.miosito.com/gallery/createGalleryCreate-
http://www.miosito.com/gallery/detail/5GalleryDetail5
http://www.miosito.com/posts/edit/5PostsEdit5

Il terzo URL (http://www.miosito.com/gallery/detail/5), ad esempio, sarà associato all'azione Detail del controller Gallery. Abbiamo già incontrato questa funzione, che si occupa di visualizzare le informazioni relative ad una singola immagine, nelle lezioni precedenti:

public ActionResult Detail(int id) { }

L'azione necessita di un parametro chiamato id, che nel nostro caso sarà uguale a 5. In questo modo l'utente riceverà dall'azione Detail del controller Gallery le informazioni sull'immagine con ID uguale a 5.

Ovviamente non siamo obbligati a strutturare sempre i nostri URL secondo la regola vista poco fa: di volta in volta saremo infatti in grado di scegliere la struttura che più si adatta ai nostri scopi. Per un blog potremmo quindi utilizzare una regola come quella del listato seguente, che risponde ad URL del tipo /Posts/2009-08-11.

RouteTable.Routes.MapRoute("Blog", 
                           "Posts/{publishedDate}",
                           new { controller = "Posts", 
                                 action = "Post" 
                               }
                          ); 

Esistono situazioni in cui potrebbe essere necessario dare libertà all'utente di specificare un numero variabile di parametri. Si pensi ad esempio alla pagina di ricerca di un blog in cui l'utente può restringere la ricerca soltanto alle categorie che lo interessano maggiormente: a seconda delle categorie selezionate dall'utente il numero di parametri specificati aumenta o diminuisce.

Per facilitare la scrittura delle regole di routing in questo caso particolare, ASP.NET consente allo sviluppatore di dichiarare l'ultimo parametro della regola in modo da includere tutta la parte finale dell'URL. È sufficiente infatti inserire un asterisco (*) prima del nome del parametro:

RouteTable.Routes.MapRoute("Search",
                           "search/{action}/{*categories}",
                           new { controller = "Search", 
                                 action = "Index" 
                               }
                          );

Di seguito sono elencati alcuni URL gestiti dalla regola precedente, con indicato il valore assunto di volta in volta dai parametri:

URL con numero di parametri variabile
URL{action}{*categories}
/search/dodo-
/search/do/categoria_1docategoria_1
/search/do/categoria_1/categoria_2/categoria_3docategoria_1/categoria_2/categoria_3

Ultimi articoli ASP.Net

LINQ e la trappola della 'deferred execution'

Una "trappola" in cui si può incappare utilizzando il risultato di...

C#, le Custom Type Conversion

Conversioni personalizzate tra classi, creare metodi particolari per...

Introduzione a Entity Framework

Il framework ORM messo a disposizione da .NET

Repeater: visualizzare un feed RSS

Utilizzare il controllo XMLDataSource e sfruttare il metodo XPath()...

Repeater, il server control "semplice"

Cos'è e come funziona il controllo Repeater

Altri articoli

Guide ASP.Net

Guida ASP.NET MVC Best Practices

Un workflow dettagliato e ricco di suggerimenti pratici per...

Guida ASP.NET Starter Kit

Un modo semplice per imparare ad utilizzare le tecnologie Microsoft...

Guida Visual Studio 2010

L'ambiente di sviluppo di riferimento per sviluppare applicazioni su...

Altre guide

Newsletter @Microsoft Dev

Ogni giovedì, direttamente nella tua e-mail: articoli, guide, tutorial e script ASP, ASP.Net, SQL server e IIS.

Iscriviti alla newsletter

Altre newsletter

Corsi in aula

Corso Progettazione database

11 Maggio 2012 a Milano
Disponibilità: 6 Posti

Amministratore di Reti Windows Server 2008

11 Giugno 2012 a Milano
Disponibilità: 5 Posti

Nessun corso previsto