3
我注意到,如果您通过asp.net mvc发送了一个查询字符串routevalue,那么您最终会将所有空格编码为“%20”。如果我想将空格转换为“+”符号,覆盖此格式的最佳方法是什么?在asp.net mvc url中格式化查询字符串的最佳方法?
我想或许使用自定义的Route对象或派生自IRouteHandler的类,但会感谢您可能有的任何建议。
我注意到,如果您通过asp.net mvc发送了一个查询字符串routevalue,那么您最终会将所有空格编码为“%20”。如果我想将空格转换为“+”符号,覆盖此格式的最佳方法是什么?在asp.net mvc url中格式化查询字符串的最佳方法?
我想或许使用自定义的Route对象或派生自IRouteHandler的类,但会感谢您可能有的任何建议。
你可以尝试写一个定制的路线:
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()
)
);
感谢达林。太棒了。 – Stuart 2010-05-25 21:49:07