2011-09-29 5 views
0

나는 세 가지 경로가 있습니다ASP.Net MVC 라우팅 : 웹 사이트의 루트를 잡는 방법? 내를 Global.asax에서

//MemberHome is supposed to handle urls like http://localhost/johndoe 
routes.MapRoute(
    "MemberHome", // Route name     
    "{username}", 
    new { controller = "PublicMember", action = "Index", username = "username" } 
); 

//Home is supposed to catch http://localhost/ 
routes.MapRoute(
    "Home",   
    "" 
); 

// the default way of doing things..  
routes.MapRoute(
    "Default", 
    "{controller}/{action}/{id}", 
    new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
); 

문제는, 나는 그들이 때 은 그러나 모두 활성화 (그냥 집에하거나 MemberHome) separtely 작업을 얻을 수의 홈 또는 MemberHome 둘 중 하나 404 리소스를 찾을 수 없습니다.

어떻게하면이 작업을 얻을 수 있습니까?

답변

0

경로의 첫 번째 부분을 별개의 것으로 설정해야합니다. 예를 들면 :

routes.MapRoute(
    "MemberHome", // Route name     
    "MemberHome/{username}", 
    new { controller = "PublicMember", action = "Index", username = "username" } 
); 

나 :

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

그런 식으로 그들은 별개의 것입니다. 어느 쪽이든 경로의 고정 된 부분이 먼저 와야합니다. 그렇지 않으면 경로 처리기가 먼저 와일드 카드 중 하나와 일치하게됩니다.