This question already has answers here:
How to get RouteData by URL?
(2个答案)
5年前关闭。
我有一个本地URL列表,我需要确定它们是否为“有效的MVC路径”。如何检查URL(路径)是否映射到MVC控制器?
Phil Haack's Route Debugger将找到与当前请求匹配的路由,并使用当前HttpContext进行匹配。我想在不建立模拟HttpContext的情况下获取此信息-如果可能的话。
(2个答案)
5年前关闭。
我有一个本地URL列表,我需要确定它们是否为“有效的MVC路径”。如何检查URL(路径)是否映射到MVC控制器?
Phil Haack's Route Debugger将找到与当前请求匹配的路由,并使用当前HttpContext进行匹配。我想在不建立模拟HttpContext的情况下获取此信息-如果可能的话。
最佳答案
您可以使用模拟的HttpContextBase调用RouteTable.Routes.GetRouteData
。
使用请求的AppRelativeCurrentExecutionFilePath
在内部对路由进行匹配。
但是,此功能未公开,因此您需要传递HttpContextBase
。
您需要创建一个HttpContextBase
类,该类在其request属性中返回一个HttpRequestBase
实例。HttpRequestBase
类需要在其~/
属性中返回以AppRelativeCurrentExecutionFilePath
开头的路径。
您不需要实现任何其他属性,除非它们被IRouteConstraint
使用。
要检查您是否有MVC路由,请检查生成的routeData.Handler is MvcRouteHandler
。
关于asp.net-mvc-routing - 如何检查给定路径的路由(ASP.NET MVC)是否存在? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4882324/