如何检查给定路径是否存在路由(ASP.NET MVC)?
问题描述:
我有一个本地URL列表,我需要确定它们是否为“有效的MVC路径”。如何检查URL(路径)是否映射到MVC控制器?如何检查给定路径是否存在路由(ASP.NET MVC)?
Phil Haack's Route Debugger将找到一个匹配当前请求的路由,并使用当前的HttpContext进行匹配。如果可能的话,我希望得到这个信息而不用建立一个模拟的HttpContext。
答
你可以用模拟的HttpContextBase调用RouteTable.Routes.GetRouteData
。
这些路线在内部使用请求的AppRelativeCurrentExecutionFilePath
匹配。
但是,此功能未公开,因此您需要通过HttpContextBase
。
您需要创建HttpContextBase
类,该类在其请求属性中返回HttpRequestBase
实例。 HttpRequestBase
类需要返回您的路径,从~/
开始,在其AppRelativeCurrentExecutionFilePath
属性中。
您不需要实现任何其他属性,除非它们被IRouteConstraint
s使用。
要检查您是否得到了MVC路由,请检查产生的结果是routeData.Handler is MvcRouteHandler
。
输入浏览器的路径并检查404? – Pierreten 2011-02-03 03:17:55
你想检查他们是否有效的路径或有效的MVC路径? – SLaks 2011-02-03 03:23:46