2011-07-28 49 views
2

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

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

回答

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

任何地方,你可以得到RouteData的请求的保持你可以得到拨打:

RouteData.Values.Remove("keyNameOfParameterToRemove"); 

但这种带有没有做你想要它做的事情,的承诺,除非你可以扩大你为什么想要这样做,以便我可以测试这个特定的目标。

+0

的问题并不是如何去除价值,但其中 – SiberianGuy

+0

@Idsa:不够公平,一定要标记您自己的答案接受。 –