【问题标题】:ASP.NET MVC routing: 2 route for same page, how to give same url rendered?ASP.NET MVC 路由:同一页面的 2 条路由,如何呈现相同的 url?
【发布时间】:2017-05-28 21:41:42
【问题描述】:

我为列表生成了一些 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” id 时,它实际上重新路由到我的“MySecondPage”路由,或将路由调用中的 url(但我认为这不可能)转换为“Site/MySecondPage”

【问题讨论】:

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


    【解决方案1】:

    您的两个网址:

    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"})
    

    【讨论】:

      【解决方案2】:

      路由将按照它们的顺序被调用,所以“ArticleToPage”总是在“MySecondPage”之前被调用。

      【讨论】:

      • 我已经尝试过了,但它不起作用,因为我要更改的网址与“ArticleToPage”匹配
      • 但是在两个路由中你调用相同的控制器和动作,没有任何改变,或者额外的属性
      • url 必须和你想要的一样。例如routes.MapRoute( name:="Article", url:="{controller}/{action}-{id}", defaults:=New {Controller = "Page", Action = "Article", id = UrlParameter.Optional} );
      猜你喜欢
      • 2010-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-29
      • 2011-07-29
      相关资源
      最近更新 更多