2010-05-25 3 views
3

Я заметил, что если вы отправили строку запроса queryvalue через asp.net mvc, вы получите все пробелы, urlencoded в "% 20". Каков наилучший способ переопределить это форматирование, так как я хотел бы, чтобы пробел был преобразован в знак «+»?Лучший способ форматирования строки запроса в URL-адресе asp.net mvc?

Я думал, возможно, используя собственный объект маршрута или класс, который происходит от IRouteHandler, но был бы признателен за любые советы, которые у вас могут быть.

ответ

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

Спасибо Дарина. Это потрясающе. – Stuart

Смежные вопросы