Construire un système de routage personnalisé à plusieurs niveaux pour les applications MVC
La création d'un système de gestion de contenu robuste (CMS) nécessite souvent la flexibilité pour définir des chemins de routage à plusieurs niveaux très spécifiques pour le contrôle administratif. Cet article détaille une solution permettant aux administrateurs de définir des itinéraires personnalisés avec plusieurs niveaux, tels que "News / Local / MyNewDog" ou "Articles / événements / Conventions / Mycon."
Extension de la base de routes: la classe CustomPageroute
Pour intégrer de manière transparente ce routage de style CMS dans votre application MVC, nous créerons une sous-classe personnalisée RouteBase
, CustomPageRoute
. Cette sous-classe remplacera les méthodes GetRouteData
et GetVirtualPath
pour gérer la logique unique de notre structure de chemin à plusieurs niveaux.
La méthode GetRouteData
La méthode GetRouteData
reçoit un HttpContextBase
et renvoie un objet RouteData
si une correspondance d'itinéraire est trouvée. Il consulte une liste de pages prédéfinie pour vérifier si le chemin virtuel demandé (à partir de la demande HTTP) existe. Une correspondance réussie remplit l'objet RouteData
avec le contrôleur, l'action et l'id.
La méthode GetVirtualPath
Inversement, GetVirtualPath
prend un objet RequestContext
et RouteValueDictionary
et renvoie un objet VirtualPathData
. Il utilise la même liste de page, cette fois en correspondance du contrôleur, de l'action et de l'ID à partir du RouteValueDictionary
. Une correspondance génère le chemin virtuel personnalisé correspondant.
Améliorations et considérations
La classe CustomPageRoute
peut être encore améliorée avec des fonctionnalités telles que:
Enregistrement d'itinéraire dans Application_Start
Enfin, enregistrez votre itinéraire personnalisé dans la méthode Application_Start
de votre application MVC, à côté de vos itinéraires existants.
Conclusion
En implémentant une sous-classe personnalisée RouteBase
, vous gagnez la possibilité de définir des chemins personnalisés à plusieurs niveaux dans le système de routage de votre application MVC. Cette approche offre une flexibilité significative pour des applications telles que CMSS ou tout scénario nécessitant des structures de chemin hiérarchiques complexes.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!