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.
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.
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().