我已经将许多路由映射到我的MVC4项目,如下所示:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
// API routing
routes.MapHttpRoute(
name: "SomeApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
// Default controller mapping for non-web api views (testing)
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
//etc.
}这就像计划的那样工作,并且我的路由被正确注册了。但是,稍后在我的视图中,我只想显示某些路由的api,并允许用户选择要显示哪些路由的api。为此,我需要能够遍历我添加的路由,并使用它们的字符串值来过滤出我想要使用的路由(下面的示例显示了我如何设置一个列表,使其只显示使用api/{controller}/{id}路由的api方法)。
var list = group.Where(g => (g.Route.RouteTemplate == "api/{controller}/{id}"));我不确定到底该怎么做。我偶然发现了this tidbit,但是RouteTable.Routes中的数据不能通过Route类型迭代,而只能通过RouteBase类型迭代(尽管Route扩展了这个类),它没有我看到的检索路由字符串RouteTemplate的方法。
所以,看起来我的主要难题是弄清楚如何遍历RouteTable.Routes并存储我映射的HttpRoutes。如有任何帮助或想法,我们将不胜感激!
发布于 2013-06-20 02:38:37
如果您希望仅遍历Web API路由集合,则可以执行类似于GlobalConfiguration.Configuration.Routes的操作来获取HttpRouteCollection。这个集合将包含您的所有api路由。
https://stackoverflow.com/questions/17198086
复制相似问题