代码之家  ›  专栏  ›  技术社区  ›  Stuart

在asp.net mvc url中格式化查询字符串的最佳方法?

  •  3
  • Stuart  · 技术社区  · 16 年前

    我注意到,如果您通过asp.NETMVC发送一个查询字符串routevalue,那么所有的空白urlencoded到“%20”中。当我想将空白转换成“+”号时,重写此格式的最佳方法是什么?

    1 回复  |  直到 16 年前
        1
  •  3
  •   Darin Dimitrov    16 年前

    您可以尝试编写自定义路由:

    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()
        )
    );