Créer des routes personnalisées pour vos applications MVC

Louis-Guillaume MORAND (Traduction)

Apprenez comment ajouter des routes personnalisées à une application ASP.Net MVC. Dans ce tutoriel, vous allez également apprendre à modifier la route par défaut dans le fichier Global.asax. ♪

- Titre : Créer des routes personnalisées pour vos applications MVC

- Auteur : Louis-Guillaume MORAND (Traduction)

- Parution : 1 mai 2009

- Licence : Copyright ® 2009 Equipe dotnet. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Sommaire

- Traduction

- Création de routes personnalisées

- Conclusion

Traduction

Cet article est la traduction la plus fidèle possible de l'article original : Creating Custom Routes

Création de routes personnalisées

Dans ce tutoriel, vous allez apprendre comment ajouter des routes personnalisées à une application ASP.Net MVC. Dans ce tutoriel, vous allez également apprendre à modifier la route par défaut dans le fichier Global.asax à l'aide d'une route personnalisée.

Pour plusieurs applications ASP.Net MVC simples, la route par défaut pourra convenir. À l'inverse, vous pourriez découvrir que vous avez des besoins de routes spécialisées. Dans ce cas, vous pouvez créer une route personnalisée.

Imaginez, par exemple, que vous construisez une application de blogging. Vous voulez donc savoir prendre en compte et utiliser des URL qui ressemblent à ceci :
/Archive/12-25-2009

Lorsqu'un utilisateur entre cette requête, vous voulez retourner l'entrée blog qui correspond à la date 25/12/2009. Pour prendre en charge ce type de requêtes, vous devez créer une route personnalisée.

Le fichier Global.asax suivant contient une nouvelle route personnalisée, nommée Blog, qui prendre en charge les requêtes de la forme /Archive/date.

Global.asax.cs

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 routes que vous ajoutez à la table des routes est important. Notre nouvelle route personnalisée est ajoutée avant la route par défaut. Si vous inversez l'ordre alors la route par défaut sera toujours appelée à la place de la route personnalisée.

La route personnalisée Blog correspond à toute requête qui commence par /Archive/. Ainsi, elle sera déclenchée pour toutes les adresses suivantes :
/Archive/12-25-2009
/Archive/10-6-2004
/Archive/apple

La route personnalisée map les requêtes entrantes vers un contrôleur nommé Archive et invoque l'action Entry(). Lorsque la méthode Entry() est appelée, la date d'entrée en tant que paramètre nommé entryDate.

Vous pouvez utiliser la route personnalisée Blog avec le contrôleur décrit par le code suivant.

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() accepte un paramètre de type DateTime. Le framework MVC est assez intelligent pour convertir automatiquement la date d'entrée de l'URL en un objet de type DateTime. Si la date passée en paramètre depuis l'URL ne peut être convertie en un objet DateTime alors l'erreur suivante est levée.

Conclusion

L'objectif de ce tutoriel était de démontrer comment vous pouvez créer une route personnalisée. Vous avez appris comment ajouter une route à la table des routes dans le fichier Global.asax. Nous avons également vu comment mapper des requêtes pour les entrées blogs vers un contrôleur nommé ArchiveController et vers une action contrôleur nommée Entry().