Partager via


Création de routes personnalisées (C#)

par Microsoft

Découvrez comment ajouter des itinéraires personnalisés à une application MVC ASP.NET. Dans ce tutoriel, vous allez apprendre à modifier la table de routage par défaut dans le fichier Global.asax.

Dans ce tutoriel, vous allez apprendre à ajouter un itinéraire personnalisé à une application MVC ASP.NET. Vous découvrez comment modifier la table de routage par défaut dans le fichier Global.asax avec un itinéraire personnalisé.

Pour de nombreuses applications MVC ASP.NET simples, la table de routage par défaut fonctionne parfaitement. Toutefois, vous découvrirez peut-être que vous avez des besoins de routage spécialisés. Dans ce cas, vous pouvez créer un itinéraire personnalisé.

Imaginez, par exemple, que vous générez une application de blog. Vous souhaiterez peut-être gérer les requêtes entrantes qui ressemblent à ceci :

/Archive/12-25-2009

Lorsqu’un utilisateur entre cette demande, vous souhaitez retourner l’entrée de blog qui correspond à la date du 25/12/2009. Pour gérer ce type de requête, vous devez créer un itinéraire personnalisé.

Le fichier Global.asax dans Listing 1 contient un nouvel itinéraire personnalisé, nommé Blog, qui gère les requêtes qui ressemblent à /Archive/date d’entrée.

Listing 1 - Global.asax (avec itinéraire personnalisé)

using System.Web.Mvc;
using System.Web.Routing;
namespace MvcApplication1
{
    public class MvcApplication : System.Web.HttpApplication
    {
        public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
            routes.MapRoute(
                "Blog",                                           // Route name
                "Archive/{entryDate}",                            // URL with parameters
                new { controller = "Archive", action = "Entry" }  // Parameter defaults
            );
            routes.MapRoute(
                "Default",                                              // Route name
                "{controller}/{action}/{id}",                           // URL with parameters
                new { controller = "Home", action = "Index", id = "" }  // Parameter defaults
            );
        }
        protected void Application_Start()
        {
            RegisterRoutes(RouteTable.Routes);
        }
    }
}

L’ordre des itinéraires que vous ajoutez à la table de routage est important. Notre nouvelle route de blog personnalisée est ajoutée avant l’itinéraire par défaut existant. Si vous avez inversé l’ordre, l’itinéraire par défaut est toujours appelé au lieu de l’itinéraire personnalisé.

L’itinéraire blog personnalisé correspond à toute requête commençant par /Archive/. Par conséquent, il correspond à toutes les URL suivantes :

  • /Archive/12-25-2009

  • /Archive/10-6-2004

  • /Archive/apple

L’itinéraire personnalisé mappe la demande entrante à un contrôleur nommé Archive et appelle l’action Entrée(). Lorsque la méthode Entry() est appelée, la date d’entrée est passée en tant que paramètre nommé entryDate.

Vous pouvez utiliser l’itinéraire personnalisé blog avec le contrôleur dans la liste 2.

Listing 2 - ArchiveController.cs

using System;
using System.Web.Mvc;
namespace MvcApplication1.Controllers
{
    public class ArchiveController : Controller
    {
        public string Entry(DateTime entryDate)
        {
            return "You requested the entry from " + entryDate.ToString();
        }
    }
}

Notez que la méthode Entry() dans Listing 2 accepte un paramètre de type DateTime. L’infrastructure MVC est suffisamment intelligente pour convertir automatiquement la date d’entrée de l’URL en valeur DateTime. Si le paramètre de date d’entrée de l’URL ne peut pas être converti en DateTime, une erreur est générée (voir figure 1).

Figure 1 - Erreur lors de la conversion du paramètre

Boîte de dialogue New Project

Figure 01 : Erreur lors de la conversion du paramètre (Cliquer pour afficher l’image de taille réelle)

Résumé

L’objectif de ce tutoriel était de montrer comment créer un itinéraire personnalisé. Vous avez appris à ajouter un itinéraire personnalisé à la table de routage dans le fichier Global.asax qui représente les entrées de blog. Nous avons expliqué comment mapper les demandes d’entrées de blog à un contrôleur nommé ArchiveController et à une action de contrôleur nommée Entry().