路由匹配后删除额外的路由值

时间:2011-07-28 17:56:35

标签: asp.net-mvc

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

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

2 个答案:

答案 0 :(得分:3)

我找到了一个简单的解决方案 - 定义自定义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();

答案 1 :(得分:1)

您可以在任何地方获得RouteData来获取您可以接听的请求:

RouteData.Values.Remove("keyNameOfParameterToRemove");

但是这并没有做出你想做的事情的承诺,除非你可以扩展你想要这样做的原因,以便我可以测试那个特定的目标。