2011-06-21 137 views
3

簡單的問題。我想要的東西:ASP .Net MVC路由無控制器和操作名稱

http://www.mywebsite.com/microsoft或http://www .mywebsite.com /蘋果 所以微軟和蘋果應該像id,但我用它就像控制器在默認

這是默認路由

routes.MapRoute(
      "Default", // Route name 
      "{controller}/{action}/{id}", // URL with parameters 
      new { controller = "Home", action = "index", id = UrlParameter.Optional } // Parameter defaults 
     ); 

這產生類似於http:/ /www.mywebsite .COM /首頁/公司簡介或http://www.mywebsite的.com /產品/細節/ 10

我增加了另外一條路線

routes.MapRoute(
      "Partner", // Route name 
      "{id}", // URL with parameters 
      new { controller = "Home", action = "Partners"}, // Parameter defaults 
      new { id = @"\d+" } 
     ); 

但這有一個限制,只允許數字ID。

我該如何完成我想要的。

感謝

回答

4

如果表達式只能包含字母和數字,你可以修改的約束:

routes.MapRoute(
    "Partner", // Route name 
    "{id}", // URL with parameters 
    new { controller = "Home", action = "Partners"}, // Parameter defaults 
    new { id = @"^[a-zA-Z0-9]+$" } 
); 
0

如果你不想提供一個數值約束,只是刪除了第四個參數,即

routes.MapRoute("Partner", "{id}", new { controller = "Home", action = "Partners"}); 

第四個參數是一個匿名對象,爲您定義的路由參數提供約束。匿名對象成員的名稱對應於路由參數 - 在本例中爲「controller」或「action」或「id」,並且這些成員的值爲正則表達式,它們約束參數必須具有的值以匹配路線。 「\ d +」表示id值必須包含一個或多個數字(僅)。