Impostare la pagina di default con MonoRail Routing HttpModule

You think it's good?

Oggi ho avuto l’occasione di utilizzare il Routing di MonoRail per risolvere un problema da tempo in sospeso, ovvero chiamare l’action di default quando nell’indirizzo viene specificato solo il nome del controller. Ad esempio se digitiamo mysite.com/admin MonoRail deve essere in grado di richiamare mysite.com/admin/default.rails.
La prima cosa da fare è creare nella root del sito la cartella admin con all’interno una pagina Default.aspx senza code-behind. In questo modo ASP.NET riscriverà la chiamata a mysite.com/admin con l’indirizzo mysite.com/admin/Default.aspx. In secondo luogo dobbiamo registrare nel web.config l’HttpModule di Routing:

A questo punto possiamo dichiarare delle regole di routing specificando con le regular expression quali indirizzi considerare e come eseguirne la riscrittura:

Nell’esempio sono state registrare due regole, nella prima vengono considerati tutti gli indirizzi che iniziano con il carattere / seguito da almeno un carattere alfanumerico e che terminano con un carattere / e la stringa Default.aspx, questi indirizzi vengono riscritti prendendo la parte prima del Default.aspx aggiungendovi /default.rails. La seconda regola invece ci permette di intercettare le chiamate alla pagina Default.aspx che si trova nella root del sito e che con la logica della prima regola porterebbe ad un controller vuoto e di conseguenza ad una bella eccezione. In questo caso l’indirizzo viene sostituito con /home/default.rails.

Nota: Per utilizzare questa tecnica è necessario creare una Default.aspx con relativa cartella per ogni controller dell’applicazione o meglio per i controller che necessitano di una pagina di default.

Comments are closed.