ASP.Net MVC RC1 RouteCollection.MapRoute问题

时间:2009-02-04 05:46:26

标签: asp.net asp.net-mvc url-rewriting actionlink

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

这是我在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”,但两个Urls最终都是“/ Products / Bikes / Index”。

我在路由中缺少什么?

感谢。

1 个答案:

答案 0 :(得分:4)

你没有遗漏任何东西。它按设计工作。

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

潜在的解决方法:

  • 修复控制器和/或操作值,使其不属于URL
  • 为控制器和/或操作的值添加顶部路径的限制
  • 始终使用路线链接而不是动作链接,因为它们明确说明哪条路线是正确的路线。