受欢迎的博客标签

asp .net core mvc中Url.RouteUrl或者Html.RouteLink实现灵活超链接,使href的值随路由名称或配置的改变而改变

Published

      超链接除了直接写在a标签的href内还可以使用路由规则来生成,这样在改变了路由规则或者路由名称时不用再去代码中更改href的值,而且还容易遗漏。借助Url.RouteUrl或者Html.RouteLink就可以轻松实现,再以后的改变中将不用再去理会路由规则的改变而带来的工作量。

.Net 5

Step 1:定义路由规则

 endpointRouteBuilder.MapControllerRoute("Topic", "{SeName}",
               new { controller = "Topic", action = "TopicDetails" });

Step 2:生成连接

<li><a class="nav-link" href="@Url.RouteUrl("Topic", new {SeName = "topic.SeName"})">Name</a></li>

output:

<a class="nav-link" href="/topic.SeName">Name</a>

.Net core 3.x 

路由规则:    

//bubuko测试

routes.MapRoute("bubuko_1", "{controller}-{action}-{eID}-{pageIndex}.html", new { controller = "abc", action = "Index" });

//bubuko测试

routes.MapRoute("bubuko_2", "{action}-{eID}-{pageIndex}.html", new { controller = "abc", action = "Index" });

   

cshtml中代码:    

Url.RouteUrl方式,路由名称是“bubuko_1”: @Url.RouteUrl("bubuko_1", new { eID = ViewBag.eID, pageIndex = ViewBag.pageIndex })
Url.RouteUrl方式,路由名称是“bubuko_2”: @Url.RouteUrl("bubuko_2", new { eID = ViewBag.eID, pageIndex = ViewBag.pageIndex })

result

Url.RouteUrl方式,路由名称是“bubuko_1”:/abc-abclist-10-12.html 
Url.RouteUrl方式,路由名称是“bubuko_2”:/abclist-10-12.html 



Html.RouteLink方式,路由名称是“bubuko_1”:@Html.RouteLink("bubuko.com分享超链接", "bubuko_1", new { eID = ViewBag.eID, pageIndex = ViewBag.pageIndex }, new { id = "abc" })
Html.RouteLink方式,路由名称是“bubuko_2”:@Html.RouteLink("bubuko.com分享超链接", "bubuko_2", new { eID = ViewBag.eID, pageIndex = ViewBag.pageIndex }, new { id = "abc" })     显示效果,html代码:     

Html.RouteLink方式,路由名称是“bubuko_1”:bubuko.com分享超链接
Html.RouteLink方式,路由名称是“bubuko_2”:bubuko.com分享超链接.