【问题标题】:ASP.Net MVC RC1 RouteCollection.MapRoute ProblemASP.Net MVC RC1 RouteCollection.MapRoute 问题
【发布时间】:2010-10-05 08:14:13
【问题描述】:

我对 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”。

我在路由上遗漏了什么?

谢谢。

【问题讨论】:

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


    【解决方案1】:

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

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

    潜在的解决方法:

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

    【讨论】:

    • 哇!只是在输入我的回复...:P
    • (如果有人认为我是布兰农的混蛋,我在现实生活中认识他。)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    • 2011-11-17
    • 2010-11-03
    • 1970-01-01
    相关资源
    最近更新 更多