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

maw*_*tex 15 asp.net-mvc-routing

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

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

SLa*_*aks 16

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

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

您需要创建一个在其请求属性中HttpContextBase返回HttpRequestBase实例的类.
HttpRequestBase类需要返回你的道路,与开始~/,在其AppRelativeCurrentExecutionFilePath属性.

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

要检查是否有MVC路由,请检查是否有结果routeData.Handler is MvcRouteHandler.