2016-03-03 38 views
0

我想从RequestContext.RouteData.Routes它的类型是获取所有路由System.Web.Mvc.Routing.RouteCollectionRoute获取路线名单从RouteCollectionRoute

当调试器打开我可以选择“结果查看”我提供的System.Web.Routing.Route一个列表,它包含了我需要的信息。

如何在代码中获取此列表(或数组)?我尝试了foreach,并且看看是否有任何可以帮助我(.ToList等)但没有成功的LinQ方法。

回答

2

有没有这样的事情RoutesRouteDataProof

RouteData只包含带有URL参数的字典。可能这不是你想要的。

但是你可以很容易地得到所有路线是这样的:

var routeList = System.Web.Routing.RouteTable.Routes.ToList(); 
+0

这正是我所需要的。谢谢 –

0

FWIW,这并没有为我工作,因为我想获得一个URL清单。通常情况下,ApiExplorer可以正常工作,但是我们使用自定义模型绑定器,而ApiExplorer似乎不支持这一点。这里更多的信息:

https://forums.asp.net/t/1835575.aspx?ApiExplorer+and+parameters+of+complex+type

反正我是能够获得使用此代码API URL清单:

var httpConfiguration = Request.GetConfiguration(); //For reference 

    var routes = httpConfiguration.Routes 
      .Select(route => (IEnumerable)route) 
      .Single(route => route!=null) 
      .Cast<HttpRoute>(); 

    var manifest = routes 
      .Select(route => route.RouteTemplate) 
      .ToList(); 

丑陋,但它的工作原理,是好还是坏。