ASP.NET MVC 路由:同一页面有 2 个路由,如何给出相同的 url 呈现?

ASP.NET MVC routing: 2 route for same page, how to give same url rendered?

我为列表生成一些 url,当 id 与某个字符串匹配时,我想调用另一条路由而不是默认的 "article" 我已经做到了。 我有 3 条路线,都有效。

 routes.MapRoute(
            name:="ArticleToPage",
            url:="article-MySecondPage",
            defaults:=New With {.Controller = "MySecondPage", .Action = "MySecondPage"}
         )
    routes.MapRoute(
        name:="MySecondPage",
        url:="MySecondPage",
        defaults:=New With {.controller = "MySecondPage", .action = "MySecondPage"}
    )

routes.MapRoute(
                name:="Article",
                url:="article-{id}",
                defaults:=New With {.Controller = "Page", .Action = "Article", .id = UrlParameter.Optional}
             )

这很好,将我重新路由到我想要的位置。

但是有没有办法调用路由"MySecondPage"而不是"AticleToPage",以获得正确的url? 我尝试指定动作路线和几件事,但我一事无成..你知道办法吗??

编辑

上面我可能没说清楚

我有 2 个 url 链接到将我发送到同一页面的那些路由:

Site/MySecondPage
Site/Article-MySecondPage

当我调用 "Site/Article-MySecondPage" 时,我希望它实际重新路由到我的 "MySecondPage" 路由,或者在路由调用中转换 url (但我认为这不可能)至 "Site/MySecondPage"

路由将按它们的顺序调用,因此 "ArticleToPage" 将始终在 "MySecondPage" 之前调用。

你们的 URLs:

Site/MySecondPage
Site/Article-MySecondPage

应该可以。也就是说,当您调用这些 URL 中的每一个时,您的应用程序应该是 运行 名为 MySecondPageController.

的控制器中的操作 MySecondPage

如果你想要生成一个URL和第二个URL,你需要使用@Html.RouteLink而不是@Html.ActionLink 所以你可以传递路由的名称来匹配。

@Html.RouteLink(
    linkText:= "My Second Page 1", 
    routeName:= "ArticleToPage", 
    routeValues:= New With {.Controller = "MySecondPage", .Action = "MySecondPage"})
@Html.RouteLink(
    linkText:= "My Second Page 2", 
    routeName:= "MySecondPage", 
    routeValues:= New With {.Controller = "MySecondPage", .Action = "MySecondPage"})