2011-09-29 33 views
0

在我的Global.asax我有三个途径:ASP.Net MVC路由:如何捕捉网站的根?

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

的问题是,我可以让他们separtely工作(只是在家中或只是MemberHome) 但是,当它们都启动了无论是家庭或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 } 
); 

这样,他们将是不同的。无论哪一个给定的路线的固定部分应该是第一,否则路线处理程序将首先匹配通配符...