如何检查给定路径是否存在路由(ASP.NET MVC)?

时间:2011-02-03 03:15:15

标签: asp.net-mvc-routing

我有一个本地URL列表,我需要确定它们是否是“有效的MVC路径”。如何检查URL(路径)是否映射到MVC控制器?

Phil Haack's Route Debugger将找到与当前请求匹配的路由,并使用当前的HttpContext执行此操作。我希望得到这些信息,而不是建立一个模拟HttpContext - 如果可能的话。

1 个答案:

答案 0 :(得分:16)

您可以使用模拟的HttpContextBase调用RouteTable.Routes.GetRouteData

使用请求AppRelativeCurrentExecutionFilePath在内部匹配路由 但是,此功能未公开,因此您需要传递HttpContextBase

您需要创建一个HttpContextBase类,在其请求属性中返回HttpRequestBase个实例 HttpRequestBase类需要在~/属性中以AppRelativeCurrentExecutionFilePath开头返回您的路径。

您不需要实现任何其他属性,除非它们被IRouteConstraint使用。

要检查是否有MVC路由,请检查生成的routeData.Handler is MvcRouteHandler