Niveaux multiples dans le routage personnalisé MVC
Problème:
Dans le contexte de la construction d'un Système de gestion de contenu personnalisé (CMS), le besoin se produit pour les structures de trajet URL dynamiques qui permettent à un administrateur de définir des niveaux de trajet personnalisés, tels que "newslocalmynewdog" ou "ArticleseventsConventionsmyCon". "
Solution:
Sous-classe Routebase personnalisée:
Pour réaliser ce scénario de routage personnalisé, créant une sous-classe de base de route personnalisée, telle que CustomPageroute, est essentielle. Cette classe définit la logique pour déterminer si une demande correspond à un itinéraire spécifique et génère le chemin d'établissement d'URL correspondant.
Logique de correspondance:
La méthode GetRoutedata dans CustomPageroute est responsable de la responsabilité de Les demandes entrantes correspondantes aux chemins de style CMS. Il extrait le chemin virtuel de l'URL de demande et tente de le faire correspondre à une liste de chemins connus stockés dans le cache.
URL de génération:
La méthode GetVirtualPath génére Chemins d'URL pour les actions de contrôleur spécifiques et les valeurs d'itinéraire. Il utilise la même logique de correspondance que dans getRoutedata et renvoie le chemin virtuel qui correspond aux paramètres de demande.
Enregistrement d'itinéraire:
être enregistré auprès du système de routage MVC à l'aide de la méthode Routes.Add. La méthode MapRoute est utilisée pour enregistrer une route par défaut pour gérer toutes les autres demandes non adaptées par l'itinéraire personnalisé.
Contrôleur et action:
La route personnalisée s'attend à un contrôleur Nommé CustomPage avec une méthode d'action nommée Détails pour gérer les demandes correspondantes. La méthode des détails peut récupérer les données de la page correspondant aux paramètres d'itinéraire et afficher le contenu approprié.
Exemple de code:
// Custom RouteBase Subclass public class CustomPageRoute : RouteBase { // Route matching logic in GetRouteData // URL generation logic in GetVirtualPath } // Route Registration routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.LowercaseUrls = true; routes.Add(name: "CustomPage", item: new CustomPageRoute()); // Default Route routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } ); // Custom Page Controller public class CustomPageController : Controller { public ActionResult Details(Guid id) { // Retrieve page data and display content return View(); } }
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!