2

我有這兩條路線:如何強制鏈接使用特定航線(MVC路由)

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

     routes.MapRoute(
      "Default2", // Route name 
      "{controller}/{action}/{OrderId}/{CustomerID}", // URL with parameters 
      new { controller = "NorthwindOrders", action = "Index", OrderId = UrlParameter.Optional, CustomerID = UrlParameter.Optional } // Parameter defaults 
     ); 

,並希望創建一個使用第二路徑路段。

我怎樣才能做到這一點?

+0

您應該反轉這兩個參數,因爲第二個參數都是可選的(與上面的id參數相同),第一個URL將始終與第一個參數匹配。即使那些匹配「Default」的鏈接也會匹配「Default2」,因此您應該使用OrderId和CustomerId(或者至少OrderId – Buildstarted 2011-05-16 20:20:44

+0

當您使用Html.ActionLink時,您可以指定要使用的Route Name – 2011-05-16 20:23:35

回答

3

如果要專門使用的路線,你可以使用HTML輔助Html.RouteLink

<%= Html.RouteLink("my link", "Default2", new {OrderId=1, CustomerId=2}) %> 

此外,您還可以先放第二條路線:最通用的途徑應該是在年底,爲了只有在沒有找到具體路線時才能使用。

0

訂單是非常重要的w/MapRoutes。嘗試顛倒這兩個語句的順序。

0

以及您應該使用不同順序的路線定義。 順序應該是更具體的第一少

也是在你的行動鏈接我要補充的路由參數

0

其實不是100%是什麼OP問,但我需要的是有力地使用特定的一個ActionResult路線。 RedirectToAction總是使用錯誤的路線。我在RedirectToRoute("RouteName", new { action="Index" })找到它。

相關問題