我已经将大量路由映射到我的 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}"));
我不确定该怎么做。我偶然发现了这个花絮,但是里面的数据RouteTable.Routes
不能通过Route
类型迭代,而只能通过RouteBase
类型(即使Route
扩展了这个类),它没有我可以看到检索路由字符串的方法,RouteTemplate
。
所以,看起来我的主要难题是如何遍历RouteTable.Routes
和存储我映射的 HttpRoutes。任何帮助/想法将不胜感激!