如何强制链接使用特定航线(MVC路由)
问题描述:
我有这两条路线:如何强制链接使用特定航线(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
);
,并希望创建一个使用第二路径路段。
我怎样才能做到这一点?
答
如果要专门使用的路线,你可以使用HTML辅助Html.RouteLink
:
<%= Html.RouteLink("my link", "Default2", new {OrderId=1, CustomerId=2}) %>
此外,您还可以先放第二条路线:最通用的途径应该是在年底,为了只有在没有找到具体路线时才能使用。
答
订单是非常重要的w/MapRoutes。尝试颠倒这两个语句的顺序。
答
以及您应该使用不同顺序的路线定义。 顺序应该是更具体的第一少
也是在你的行动链接我要补充的路由参数
答
其实不是100%是什么OP问,但我需要的是有力地使用特定的一个ActionResult路线。 RedirectToAction
总是使用错误的路线。我在RedirectToRoute("RouteName", new { action="Index" })
找到它。
您应该反转这两个参数,因为第二个参数都是可选的(与上面的id参数相同),第一个URL将始终与第一个参数匹配。即使那些匹配“Default”的链接也会匹配“Default2”,因此您应该使用OrderId和CustomerId(或者至少OrderId – Buildstarted 2011-05-16 20:20:44
当您使用Html.ActionLink时,您可以指定要使用的Route Name – 2011-05-16 20:23:35