2017-10-13 17 views
0

하나의 경로에 세그먼트 "Portal"이 있고 다른 경로에 "Portal"세그먼트가 전혀없는 MVC 애플리케이션에서 경로를 설정하려고합니다. 기본적으로, 나는 같은 페이지로 사용자를 보낼 이러한 URL이 필요하지만, 나 또한/홈/색인 기본 할 것을 권장합니다MVC에서 동일한 대상을 가리 키도록 2 개의 경로 (하드 코드 된 세그먼트가있는 경로와 빈 세그먼트가있는 경로)를 어떻게 설정합니까?

/Portal/Home/Index 
/Home/Index 

나는 다음과 같은 코드가있다 :

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 
); 

이 허용 사용자가/Portal/Home/Index 및/Home/Index로 이동하지만 웹 사이트가/Portal/Home/Index로 기본 설정되어있는 것이 문제입니다.

나는/홈/색인에 기본값으로 웹 사이트를 필요로하지만 여전히/포털/홈/색인

답변

1

하나의 솔루션이 홈 페이지는 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 
); 

참고 : 그것은 당신의 PortalDefault 경로 portal에 대한 경로 값을 정의하지 않는 이상한 것 같다,하지만 Default 경로가하는.