Asp.net mvc 删除路由匹配后的额外路由值

Asp.net mvc 删除路由匹配后的额外路由值,asp.net-mvc,Asp.net Mvc,是否有任何方法可以在匹配路由后但在执行匹配操作之前删除某些路由值。我的操作不包含某些路由值,我想删除它们 换句话说,有一些路由值不会在我的控制器中使用(但被过滤器使用),我不想让它继续运行。任何地方都可以获得RouteData的请求呼叫: RouteData.Values.Remove("keyNameOfParameterToRemove"); 但这并不能保证实现您希望它实现的目标,除非您能详细说明为什么要这样做,这样我就可以测试特定的目标。我找到了一个简单的解决方案-定义自定义RouteH

是否有任何方法可以在匹配路由后但在执行匹配操作之前删除某些路由值。我的操作不包含某些路由值,我想删除它们


换句话说,有一些路由值不会在我的控制器中使用(但被过滤器使用),我不想让它继续运行。

任何地方都可以获得
RouteData
的请求呼叫:

RouteData.Values.Remove("keyNameOfParameterToRemove");

但这并不能保证实现您希望它实现的目标,除非您能详细说明为什么要这样做,这样我就可以测试特定的目标。

我找到了一个简单的解决方案-定义自定义RouteHandler:

public class CustomMvcRouteHandler: MvcRouteHandler
{
    protected override System.Web.IHttpHandler GetHttpHandler(RequestContext requestContext)
    {
        requestContext.RouteData.Values.Remove("someValue");
        return base.GetHttpHandler(requestContext);
    }
}

// ... and when defining the route, set the route handler to be your custom route handler
route.RouteHandler = new CustomMvcRouteHandler();

问题不在于如何消除价值,而在于在何处消除价值