Лучший способ отформатировать строку запроса в URL-адресе asp.net mvc?
Я заметил, что если вы отправили строку запроса routevalue через asp.net mvc, вы получите все пробельные символы, закодированные в "%20". Каков наилучший способ переопределения этого форматирования, поскольку я хотел бы, чтобы пробельные символы были преобразованы в знак "+"?
Я думал о том, чтобы использовать пользовательский объект Route или класс, производный от IRouteHandler, но был бы признателен за любой совет, который вы могли бы получить.
1 ответ
Решение
Вы можете попробовать написать собственный маршрут:
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()
)
);