在路由匹配之后但在执行匹配操作之前,是否有任何方法可以删除某些路由值。我的操作不包含一些路由值,我想删除它们。
换句话说,有一些路由值不会在我的控制器中使用(但由过滤器使用),我不想让它保持运作。
答案 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");
但是这并没有做出你想做的事情的承诺,除非你可以扩展你想要这样做的原因,以便我可以测试那个特定的目标。