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

时间:2017-01-13 13:40:12

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

我为列表生成一些url,当id匹配某个字符串时,我想调用另一条路径而不是默认的"文章"一 我设法做到了。 我有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",为了拥有正确的网址? 我试图指定路线行动和几件事但我无处可去..你知道吗?

编辑

我可能不清楚那里

我有2个网址链接到那些将我发送到同一页面的路线:

Site/MySecondPage
Site/Article-MySecondPage

当我打电话给#34; Site / Article-MySecondPage"我希望它真正重新路由到我的" MySecondPage"路由,或转换路由呼叫中的网址(但我认为不可能)到"网站/ MySecondPage"

2 个答案:

答案 0 :(得分:0)

路由将按顺序调用,所以" ArticleToPage"将始终在" MySecondPage"。

之前调用

答案 1 :(得分:0)

您的两个网址:

Site/MySecondPage
Site/Article-MySecondPage

应该有效。也就是说,当您调用其中每个URL时,您的应用程序应在名为MySecondPage的控制器中运行MySecondPageController操作。

如果你想要的是生成带有第二个网址的网址,则需要使用@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"})