ASP.Net MVC Routing: как поймать корень сайта? - PullRequest
0 голосов
/ 29 сентября 2011

В моем 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), но когда они оба активированы, либо Home, либо HomeMemberHome, который дает мне ресурс 404 не найден ..

Есть идеи, как я могу получить эту работу?

1 Ответ

0 голосов
/ 29 сентября 2011

Вам нужно установить первую часть маршрута на что-то особенное.Например:

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

Таким образом, они будут различаться.В зависимости от того, какой из них указан, на первом месте должна стоять фиксированная часть маршрута, иначе обработчик маршрута будет сначала совпадать с подстановочным знаком ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...