Comprendre le Mapping de Route dans ASP.Net MVC

Naviguer dans le monde de l’architecture MVC (Modèle Vue Contrôleur) dans ASP.Net peut être intimidant, surtout lorsque vous débutez. Un défi commun auquel les développeurs sont confrontés est le routage – spécifiquement, le mapping de routes personnalisées vers des contrôleurs. Dans cet article, nous allons aborder un problème fréquemment rencontré : mapper des fichiers *.aspx à un PageController.

Le Problème : Mapper *.aspx à PageController

Imaginez que vous êtes nouveau dans MVC et que vous voulez servir des pages en utilisant des extensions ASPX. Vous pourriez essayer de créer une route comme suit :

routes.MapRoute(
   "Page",
   "{name}.aspx",
   new { controller = "Page", action = "Index", id = "" }
);

Cependant, en testant cette route en entrant une URL comme /Page.aspx, vous pourriez rencontrer un message d’erreur indiquant que le contrôleur pour le chemin n’a pas pu être trouvé :

Le contrôleur pour le chemin ‘/Page.aspx’ n’a pas pu être trouvé ou il n’implémente pas l’interface IController. Nom du paramètre : controllerType

Cette erreur peut être frustrante, vous laissant vous demander si vous avez manqué quelque chose.

La Solution : L’Ordre Est Important dans le Mapping des Routes

Vous serez peut-être soulagé d’apprendre que la solution à votre problème était simplement l’ordre de routage. ASP.Net MVC traite les routes dans l’ordre dans lequel elles sont enregistrées. Cela signifie que si la route par défaut est déclarée avant vos routes personnalisées, elle aura la priorité.

Étapes pour Corriger le Problème

  1. Déplacer votre Route Personnalisée : Assurez-vous que votre mapping de route personnalisé pour *.aspx est défini avant la route par défaut. L’enregistrement ajusté devrait ressembler à ceci :

    routes.MapRoute(
        "Page",
        "{name}.aspx",
        new { controller = "Page", action = "Index", id = "" }
    );
    
    routes.MapRoute(
        "Default",
        "{controller}/{action}/{id}",
        new { controller = "Home", action = "Index", id = UrlParameter.Optional }
    );
    

Comment Fonctionne le Routage : Convention sur Configuration

Pour clarifier davantage la logique de routage, nous pouvons identifier que MVC utilise un principe connu sous le nom de Convention sur Configuration. Cela signifie que le framework essaie de deviner où une demande doit aller en se basant sur des conventions plutôt que sur une configuration explicite.

Ressources Supplémentaires

Pour ceux qui souhaitent approfondir leur compréhension du routage ASP.Net MVC, Scott Guthrie, l’un des créateurs principaux d’ASP.Net, a partagé des informations précieuses :

Ces deux ressources fournissent une richesse d’informations qui peuvent vous aider à naviguer dans les nuances de MVC et du routage.

Conclusion

En conclusion, mapper avec succès des pages *.aspx à PageController dans ASP.Net MVC implique plus que d’écrire le code correct ; cela nécessite de comprendre l’ordre des enregistrements de route et les principes sous-jacents du framework. En vous assurant que vos routes personnalisées sont correctement prioritaires, vous pouvez éliminer les erreurs frustrantes associées au processus de routage.

Donc, la prochaine fois que vous vous sentirez perplexe face au routage MVC, rappelez-vous que l’ordre est important et recherchez des ressources bien respectées pour guider votre parcours.