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"})
我为列表生成一些 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"})