di: Simone Moretti 17 Febbraio 2010
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:
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:
PercorsoIscritti laurea, un parametro chiamato anno{*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.true indica che desideriamo applicare la verifica dei vincolianno (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.
Guida Windows Azure Code SnippetsLe migliori pratiche per far girare le applicazioni "in the cloud",... |
Guida ASP.NET MVC Best PracticesUn workflow dettagliato e ricco di suggerimenti pratici per... |
Guida ASP.NET Starter KitUn modo semplice per imparare ad utilizzare le tecnologie Microsoft... |
Ogni giovedì, direttamente nella tua e-mail: articoli, guide, tutorial e script ASP, ASP.Net, SQL server e IIS.
Iscriviti alla newsletter
|
|
Corso Progettazione database11 Maggio 2012 a Milano |
|
|
Amministratore di Reti Windows Server 200811 Giugno 2012 a Milano |
|
Nessun corso previsto |