1

我对 ASP.Net MVC 的 RC1 版本有疑问。每当我在“默认”路由之前添加一个路由时,创建的结果 URL 是为添加的第一个路由。

这是我在 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 = "" }  
        );

我的网址创建:

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

我希望第一个 ActionLink 创建一个像“/Bikes/Index”这样的 Url,第二个 RouteLink 创建一个“/Products/Bikes/Index”,但两个 Url 最终都是“/Products/Bikes/Index”。

我在路由上缺少什么?

谢谢。

4

1 回答 1

4

你没有错过任何东西。它按设计工作。

由于控制器和动作在顶部路由中都是可变的,对有效值没有限制,因此该路由对控制器和动作的所有值都有效。

潜在的解决方法:

  • 修复控制器和/或操作值,使它们不属于 URL
  • 为控制器和/或操作值的顶部路由添加限制
  • 始终使用路由链接而不是操作链接,因为它们明确说明哪条路由是正确的路由。
于 2009-02-04T05:58:28.780 回答