我注意到如果你通过asp.net mvc发送了一个查询字符串routevalue,你最终将所有空格urlencoded到“%20”。覆盖此格式的最佳方法是什么,因为我希望将空格转换为“+”符号?
我在考虑使用一个自定义的Route对象或一个派生自IRouteHandler的类,但我会很感激您的建议。
答案 0 :(得分: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()
)
);