2009-02-04 56 views
1

我有一個ASP.Net MVC RC1版本的問題。每當我在「默認」路線之前添加路線時,創建的結果網址都會添加到第一條路線。ASP.Net MVC RC1 RouteCollection.MapRoute問題

這是我在Global.asax.cs中路由

routes.MapRoute(
      "product-detailed", 
      "Products/{controller}/{action}/{id}", 
      new { controller = "ProductSubType", action = "Index", id = "" } 
     ); 

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

我的URL創建:

 <%= Html.ActionLink("Bikes", "Index", "Bikes") %><br /> 
     <%= Html.RouteLink("Bikes", "product-detailed", new { controller = "Bikes", action = "Index" }) %> 

我希望第一個ActionLink的創造,如 「/自行車/索引」 的URL和第二個RouteLink創建「/產品/自行車/索引」,但這兩個網址最終爲「/產品/自行車/索引」。

我在這裏丟失了什麼路由?

謝謝。

回答

4

你不會錯過任何東西。它按照設計工作。

由於控制器和操作在頂層路由中都是可變的,對有效值沒有限制,因此該路由對控制器和操作的所有值都有效。

潛在的變通辦法:

  • 修復控制器和/或行動值,這樣他們不是URL
  • 的頂級路線添加限制控制器和/或行動的價值的一部分
  • 始終使用路線鏈接而不是動作鏈接,因爲它們明確指出哪條路線是正確的路線。
+0

doh!只是輸入我的回覆...:P – Brannon 2009-02-04 05:58:58