2011-09-29 34 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 } 
); 

這樣,他們將是不同的。無論哪一個給定的路線的固定部分應該是第一,否則路線處理程序將首先匹配通配符...