【问题标题】:How to get actual URL from a list of routes?如何从路由列表中获取实际 URL?
【发布时间】:2012-06-29 08:55:44
【问题描述】:

我在 System.Web.Routing 中定义了一组路由,并且需要获取带有 .aspx 扩展名的实际 url。我已经尝试过这段代码,但我在这里做错了:

 var path = RouteTable.Routes.GetVirtualPath(null, item.Link, null);
 var link = path.Route.GetVirtualPath(null, null);
 if (link.VirtualPath.ToLower().Contains("~/displaycmspage.aspx?pagename="))
 {
      //do work on url here
 }

关于我如何做到这一点的任何想法? item.link 是我拥有路线的自定义对象。

【问题讨论】:

    标签: c# asp.net .net asp.net-routing


    【解决方案1】:

    好的,所以我找到了答案:

     var path = RouteTable.Routes[item.Link];
     Route ruta = path as Route;
     var link = ruta.RouteHandler as PageRouteHandler;
     if (link.VirtualPath.ToString().ToLower().Contains("~/displaycmspage.aspx?pagename="))
     {
          //do work on url here
     }
    

    【讨论】:

    • 永远不要使用ToLower().Contains()。使用StringComparison.OrdinalIgnoreCaseinstead
    • PageRouteHandler.VirtualPath 已经 `string!
    • - 我不知道 StringComparison.OrdinalIgnoreCase - 谢谢 - 我知道它已经是一个字符串了我只是忘记了 ToString() 方法,因为我一直在更改代码并且我没有做任何事情清理。无论如何,谢谢你的评论。
    • 什么是 item.Link?
    • item.Link 是路由表中的路由名称
    猜你喜欢
    • 1970-01-01
    • 2013-08-05
    • 2016-11-06
    • 2018-03-27
    • 2012-01-03
    • 1970-01-01
    • 1970-01-01
    • 2015-10-25
    • 2018-03-27
    相关资源
    最近更新 更多