2017-10-13 17 views
0

J'essaye de configurer des routes dans mon application MVC, où une route pourrait avoir le segment "Portal" et une autre route n'a aucun segment "Portal" du tout. Essentiellement, j'ai besoin ces URL pour envoyer l'utilisateur à la même page, mais je veux aussi/Accueil/index à la valeur par défaut:Dans MVC, comment configurer 2 routes (une avec un segment codé en dur, et l'autre avec un segment vide) pour pointer vers la même destination?

/Portal/Home/Index 
/Home/Index 

Je le code suivant:

routes.MapRoute(
    "PortalDefault", // Route name 
    "Portal/{controller}/{action}/{id}", // URL with parameters 
    new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults 
); 

routes.MapRoute(
    "Default", // Route name 
    "{controller}/{action}/{id}", // URL with parameters 
    new { controller = "Home", action = "Index", id = UrlParameter.Optional, portal = String.Empty } // Parameter defaults 
); 

Cela permet l'utilisateur doit aller dans/Portal/Home/Index et/Home/Index mais le problème est que le site par défaut est maintenant/Portal/Home/Index.

J'ai besoin le site Web par défaut à/Accueil/Index mais permettent/Portail/Accueil/Index

Répondre

1

Une solution est d'ajouter une route pour la page d'accueil de passer outre PortalDefault.

routes.MapRoute(
    "Home", // Route name 
    "", // URL with parameters 
    new { controller = "Home", action = "Index", portal = String.Empty } // Parameter defaults 
); 

routes.MapRoute(
    "PortalDefault", // Route name 
    "Portal/{controller}/{action}/{id}", // URL with parameters 
    new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults 
); 

routes.MapRoute(
    "Default", // Route name 
    "{controller}/{action}/{id}", // URL with parameters 
    new { controller = "Home", action = "Index", id = UrlParameter.Optional, portal = String.Empty } // Parameter defaults 
); 

REMARQUE: Il semble étrange que votre itinéraire PortalDefault ne définit pas une valeur d'itinéraire pour portal, mais votre itinéraire Default fait.