ASP MVC4 – Introduction à Razor, le routage des URL

Le routage avec MVC4:

Les applications MVC utilisent le système de routage ASP.Net qui défini comment les URL correspondent à un contrôleur et une action particulière.
La convention veut qu’un contrôleur soit nommé HomeController et que celui-ci soit le point de départ de l’application MVC.

Exemple:
URL/Home ou encore URL/Home/Index ira appeler la méthode Index du controleur HomeController.

Lorsque Visual Studio crée un projet MVC, certaines routes sont créées par défaut, et ce même avec le template Empty.
Par défaut, le patron de routage ressemble à ceci : {controleur}/{action}/{id} mais il est possible de personnaliser ce patron.

Le fichier App_Start/RouteConfig.cs contient le pattern (patron) par défaut pour les URL :

public static void RegisterRoutes(RouteCollection routes)
{
  routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 
  routes.MapRoute(
    name: "Default",
    url: "{controller}/{action}/{id}",
    defaults: new { 
              controller = "Home", 
              action = "Index", 
              id = UrlParameter.Optional }
  );
}

Note: Pour MVC 3 et inférieur le routage se renseigne dans le fichier Global.aspx à la racine de l’application.

Pour personnaliser les URL pour une recherche d’archive dans un blog.
Création du controleur du blog “BlogController.cs” Comme pour le HomeController.cs contenant les actions “SortArchive” & “InsertResult”.

public class BlogController : Controller{
  public string SortArchive(DateTime? entryDate)
  {
    return "Recherche des archives par date:=" + entryDate.ToString();
  } 

  public ActionResult InsertResult()
  {
    ViewData["Message"] = "Résultat";
    return View();
  }
}

Maintenant dans le fichier App_Start/RouteConfig.cs il suffit d’inscrire les routes des méthodes pour que les URL du type Archive/07-23-2013 soient prises en compte.

routes.MapRoute(
  name: "BlogCustom",
  url: "Archive/{entrydate}",
  new { controller = "Blog", action = "Archive" }
);

 

Les contraintes de routage :

Il est possible d’ajouter des contraintes sur les URL, on va voir les 3 types de contrainte de base.

Exemple de contrainte par expression régulière:

 routes.MapRoute(
   name: "BlogCustom",
   url: "Archive/{entrydate}",
   new { controller = "Blog", action = "Archive" },
   new { entryDate = @”\d{2}-\d{2}-\d{4}” }
 );

Exemple de contrainte par le type de méthode HTML:

 routes.MapRoute(
   name: "BlogHttpMethod",
   url: "Archive/{entrydate}",
   new { controller = "Blog", action = "Archive" },
   new { methode= new HttpMethodConstraint(“GET”) }
 );

Exemple de “Catch all” routes:
Pour cela, la classe CatchAllController va être créée dans le dossier /Controllers.

public class CatchAllController : Controller{
  public string Index(string AllValues)
  {
    string[] PassedValue = AllValues.Split('/');
    return "You are Passing Values:" + String.Join(",", PassedValue);
  }
}

Et le pattern de routage:

 //Custom Route Catch-All  Routes
 routes.MapRoute(
   "CatchAllRoute",
   "CatchAll/{*AllValues}",
   new { Controller = "CatchAll", action = "Index" });

Voilà pour ce petit résumé des options de routage avec MVC 4 !

Une réflexion au sujet de « ASP MVC4 – Introduction à Razor, le routage des URL »

  1. Ping : My Homepage

Les commentaires sont fermés.