Лучший способ отформатировать строку запроса в 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()
    )
);
Другие вопросы по тегам