ASP.Net  »  Articoli  »  ASP.NET 4 

ASP.NET Routing: URL amichevoli con Web Form 4.0 e Visual Studio 2010

di: Simone Moretti     17 Febbraio 2010

Registrare un percorso

Abbiamo visto che il Routing non consiste solo nell'assegnare a file fisici indirizzi diversi (URL Rewrite), ma anche nel mappare dinamicamente interi percorsi, grazie ai quali realizzare le richieste e passare anche dei parametri.

I dati relativi ai percorsi sono contenuti in una RouteTable che contiene tutti i percorsi attivi nell'applicazione (memorizzati nella collection Routes di tipo RouteCollection).

Cominciamo con il registrare questi percorsi (routes) in modo tale da poterli utilizzare all'interno della nostra applicazione. Per farlo apriamo il file Global.asax (se non c'è lo creiamo) ed importiamo lo spazio dei nomi System.Web.Routing, che ci servirà per manipolare gli oggetti di cui abbiamo parlato:

<%@ Import Namespace="System.Web.Routing" %>

Poi scriviamo un semplice metodo RegistraPercorsi in cui aggiungere i nostri percorsi a quelli dell'applicazione e lo richiamiamo nel metodo Application_Start:

void Application_Start(object sender, EventArgs e)
{
  // passiamo la collection dei percorsi al nostro metodo
  RegistraPercorsi(RouteTable.Routes); 
}

A questo punto dedichiamoci al nostro metodo che piazziamo in fondo al Global.asax. Iniziamo con il definire una regola per il nostro primo link:

void RegistraPercorsi (RouteCollection routes)
{
  routes.MapPageRoute("", "dettagliLaurea/{laurea}", "~/target.aspx");
}

Il sistema è molto semplice, chiamiamo il metodo MapPageRoute indicando:

  • il nome della regola di mapping (che abbiamo lasciato vuota)
  • un'espressione in cui mettiamo le parti variabili dell'URL tra parentesi graffe, che diventeranno i parametri della chiamata
  • la pagina reale di destinazione

In breve, quando clicchiamo sul primo link del nostro esempio, chiamiamo la pagina default.aspx e le passiamo il parametro laurea.

Questa regola è molto semplice ma potrebbe essere troppo potente. Potremmo voler circoscrivere i nostri indirizzi, per evitare malfunzionamenti dell'applicazione. Possiamo inserire una serie di vincoli come quelli che scriviamo in questa seconda regola:

  routes.MapPageRoute("PercorsoIcritti", 
                      "elencoIscritti/{laurea}/{anno}/{*vincoli}",
                      "~/target.aspx", true,
                      new RouteValueDictionary { 
                          { "laurea", "INF" }, 
                          { "anno", DateTime.Now.Year.ToString() } },
                      new RouteValueDictionary { 
                          { "laurea", "[a-z]{3}" }, 
                          { "anno", @"\d{4}" } }
                     );

Esaminiamo i parametri anche questa volta, abbiamo:

  • un percorso nominato PercorsoIscritti
  • una URL con un parametro chiamato laurea, un parametro chiamato anno
  • la sintassi {*vincoli} serve a stabilire che i parametri {laurea} e {anno}, sono elementi della collezione chiamata vincoli. Questo può servire poi in fase di lettura dei parametri.
  • il true indica che desideriamo applicare la verifica dei vincoli
  • il primo dizionario per i valori di default, laurea sarà INF e l'anno quello in corso
  • l'ultimo parametro è un dizionario con le regole per i parametri anno (numerico di 4 cifre) e laurea (alfanumerico di 3 caratteri)

È necessario nominare un percorso solo quando c'è una possibile ambiguità con altri percorsi, nel nostro caso l'abbiamo fatto per completezza espositiva.

Guide ASP.Net

Guida Windows Azure Code Snippets

Le migliori pratiche per far girare le applicazioni "in the cloud",...

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...

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