2011-02-03 142 views
14

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

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

+0

输入浏览器的路径并检查404? – Pierreten 2011-02-03 03:17:55

+0

你想检查他们是否有效的路径或有效的MVC路径? – SLaks 2011-02-03 03:23:46

回答

14

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

这些路线在内部使用请求的AppRelativeCurrentExecutionFilePath匹配。
但是,此功能未公开,因此您需要通过HttpContextBase

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

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

要检查您是否得到了MVC路由,请检查产生的结果是routeData.Handler is MvcRouteHandler