2010-05-25 25 views
3

我注意到,如果您通过asp.net mvc发送了一个查询字符串routevalue,那么您最终会将所有空格编码为“%20”。如果我想将空格转换为“+”符号,覆盖此格式的最佳方法是什么?在asp.net mvc url中格式化查询字符串的最佳方法?

我想或许使用自定义的Route对象或派生自IRouteHandler的类,但会感谢您可能有的任何建议。

回答

3

你可以尝试写一个定制的路线:

public class CustomRoute : Route 
{ 
    public CustomRoute(string url, RouteValueDictionary defaults, IRouteHandler routeHandler) 
     : base(url, defaults, routeHandler) 
    { } 

    public override VirtualPathData GetVirtualPath(RequestContext requestContext, RouteValueDictionary values) 
    { 
     var path = base.GetVirtualPath(requestContext, values); 
     if (path != null) 
     { 
      path.VirtualPath = path.VirtualPath.Replace("%20", "+"); 
     } 
     return path; 
    } 
} 

而且这样注册它:

routes.Add(
    new CustomRoute(
     "{controller}/{action}/{id}", 
     new RouteValueDictionary(new { 
      controller = "Home", 
      action = "Index", 
      id = UrlParameter.Optional 
     }), 
     new MvcRouteHandler() 
    ) 
); 
+0

感谢达林。太棒了。 – Stuart 2010-05-25 21:49:07

相关问题