Le Url Routing avec ASP.NET WebForm

Le routing en .NET a débuté avec la sortie de ASP.NET MVC (Model View Controller). L'utilisation de l'engin de routing en ASP.NET requiert Microsoft Framework .NET 3.5 SP1.

Qu'est ce que le Url Routing ?

Le perfectionnement des moteurs de recherche comme Google, Yahoo ou Bing fait en sorte qu'il est important d'utiliser les dernières techniques pour s'assurer d'un bon positionnement. L'engin Url Routing d'ASP.NET vous permet de créer des liens plus attrayants. Vous pouvez ainsi inclure des mots clés ou termes spécifique directement dans vos liens.

Exemple

Imaginon que vous avec un formulaire ASP.NET standard : produit.aspx dans votre application. L'approche classique pour visionner cette page est de pointer une adresse directement sur l'emplacement physique de la page sur le serveur. Comme par exemple : http://www.monsite.com/produit.aspx?c=10&i=5, ou la valeur 10 représente la catégorie et la valeur 5 représente la clé primaire de l'item dans la base de données des produits.

Le Routing permet de décomposer l'adresse en plusieurs points. Le résultat final ne représente plus un fichier physique sur le disque, mais plutôt un chemin virtuel. Pour reprendre l'exemple ci-haut, le résultat sera : http://www.monsite.com/hockey/patins-reebok.

Le résultat que nous obtenons avec cette méthode n'est pas seulement plus propre, mais il permet d'inclure des mots clés important comme le nom de la catégorie en cours et le nom de l'item.

Utilisation

Ajoutez une référence : System.Web.Routing à votre projet.

Pour l'utilisation avec IIS 6, vous devez ajouté une instruction httpModules dans le fichier Web.Config

<httpModules>     
    <add name="RoutingModule"
    type="System.Web.Routing.UrlRoutingModule,
    System.Web.Routing,
    Version=3.5.0.0, Culture=neutral,
    PublicKeyToken=31bf3856ad364e35"/>
</httpModules>

Pour l'utilisation avec IIS 7, vous devez ajouté 2 entrées dans le fichier Web.Config

   
<system.webServer>
   <modules runAllManagedModulesForAllRequests="true">

      <add name="UrlRoutingModule"
             type="System.Web.Routing.UrlRoutingModule, 
                   System.Web.Routing, Version=3.5.0.0, 
                   Culture=neutral, 
                   PublicKeyToken=31BF3856AD364E35" />
    </modules>
    <handlers>

      <add name="UrlRoutingHandler"
            preCondition="integratedMode"
            verb="*" path="UrlRouting.axd"
            type="System.Web.HttpForbiddenHandler, 
                  System.Web, Version=2.0.0.0, Culture=neutral, 
                  PublicKeyToken=b03f5f7f11d50a3a" />
    </handlers>
</system.webServer>

Utilisation du module de Url Routing : http://haacked.com/archive/2008/03/11/using-routing-with-webforms.aspx.

Exemple d'utilisation dans Visual Studio

L'initialisation et la définition des modèles de URL se fait dans le fichier Global.asax. Voici un exemple :

    
    void Application_Start(object sender, EventArgs e)
    {
        RegisterRoutes(RouteTable.Routes);
    }    
    
    void RegisterRoutes(RouteCollection routes)
    {
        Route r = null;        

        routes.Add(new Route("favicon.ico", new StopRoutingHandler()));        
        routes.Add(new Route("{resource}.axd/{*pathInfo}", new StopRoutingHandler()));        
        routes.Add(new Route("{service}.asmx/{*path}", new StopRoutingHandler())); 
           
        r = new Route("{Culture}/evenements", new PageRouteHandler("~/evenement-liste.aspx"));        
        r.Constraints = new RouteValueDictionary { { "Culture", "[a-z]{2}" } };        
        routes.Add("evenement-liste", r);        
        
        r = new Route("{Culture}/evenements/{Annee}", new PageRouteHandler("~/evenement-liste.aspx"));        
        r.Constraints = new RouteValueDictionary { { "Culture", "[a-z]{2}" }, { "Annee", @"\d{4}" } };        
        routes.Add("evenement-annee", r);        
        
        r = new Route("{Culture}/evenements/{Annee}/{Mois}", new PageRouteHandler("~/evenement-liste.aspx"));        
        r.Constraints = new RouteValueDictionary { { "Culture", "[a-z]{2}" }, { "Annee", @"\d{4}" }, { "Mois", @"\d{2}" } };  
        routes.Add("evenement-annee-mois", r);
    }

Construction de l'adresse URL
Pour créer un lien, nous utilisons la collection de modèle générée lors de l'application startup (Global.asax).

VirtualPathData pathData = 
    RouteTable.Routes.GetVirtualPath(
                  null,
                  "evenement-liste",
                  new RouteValueDictionary { { "Culture", "fr" } });

return pathData.VirtualPath;

Commentaires

À propos

Je suis un développeur web. Je m'intéresse également à l'optimisation de site pour les moteurs de recherche (SEO). Sur ce site, vous trouverez des trucs, conseils, tutoriels pour vous aider à développer  des applications web à l'aide de : ASP.NET, ASP.NET MVC, jQuery, Javascript et plus. De plus, je vous tiendrai au courant des nouveautés sur le web.

Pages