我正在.NET 3.5下运行asp.net mvc 2站点,我想在Global.asax中的GetVaryByCustomString
处理程序中访问路由值。鉴于传递给函数的HttpContext
,我不清楚如何(如果有的话)访问特定的路由值。
供参考,以下是GetVaryByCustomString
public override string GetVaryByCustomString(HttpContext context, string custom)
{
// how do I get at route values here from context?
}
有人能指出我正确的方向吗?
答案 0 :(得分:6)
对于任何试图在ASP.NET MVC 4.0上进行此工作的人来说,这是正确的方法。
HttpContextBase currentContext = new HttpContextWrapper(context);
RouteData routeData = RouteTable.Routes.GetRouteData(currentContext);
这有点破解,但这是目前唯一的解决方案,因为在路由之前执行缓存验证,因此路由数据不可用。
答案 1 :(得分:3)
var routeData = ((MvcHandler)httpContext.Handler).RequestContext.RouteData;
var routeValues = routeData.Values;
var matchedRouteBase = routeData.Route;
var matchedRoute = matchedRouteBase as Route
答案 2 :(得分:-1)
这是一种更简单的方法
httpContext.Current.Request.RequestContext.RouteData