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:
"Default")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).
| URL | {controller} | {action} | {id} |
|---|---|---|---|
http://www.miosito.com/ | Home | Index | - |
http://www.miosito.com/gallery | Gallery | Index | - |
http://www.miosito.com/gallery/create | Gallery | Create | - |
http://www.miosito.com/gallery/detail/5 | Gallery | Detail | 5 |
http://www.miosito.com/posts/edit/5 | Posts | Edit | 5 |
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 | {action} | {*categories} |
|---|---|---|
/search/do | do | - |
/search/do/categoria_1 | do | categoria_1 |
/search/do/categoria_1/categoria_2/categoria_3 | do | categoria_1/categoria_2/categoria_3 |
LINQ e la trappola della 'deferred execution'Una "trappola" in cui si può incappare utilizzando il risultato di... |
C#, le Custom Type ConversionConversioni personalizzate tra classi, creare metodi particolari per... |
Introduzione a Entity FrameworkIl framework ORM messo a disposizione da .NET |
Repeater: visualizzare un feed RSSUtilizzare il controllo XMLDataSource e sfruttare il metodo XPath()... |
Repeater, il server control "semplice"Cos'è e come funziona il controllo Repeater |
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... |
Guida Visual Studio 2010L'ambiente di sviluppo di riferimento per sviluppare applicazioni su... |
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 |