Как сделать ASP.NET Routing значения escape-маршрута?

У меня есть сайт ASP.NET MVC, где я хочу такие маршруты, как/{controller}/{id}/{action}/{date}где "дата" являетсямм / дд / гггг часть даты / времени. (Я имею дело с данными, измеренными во времени, поэтому для выполнения большинства операций мне нужен и идентификатор, и момент времени)

Маршрут для этого прост:

routes.MapRoute(
    "TimeDimensionedRoute",
    "{controller}/{id}/{action}/{date}",
    new { controller = "Iteration", action = "Index", id = String.Empty, date = String.Empty }
);

Этот маршрут правильно карты "/ Foo / 100 / Редактировать / 01% 2F21% 2F2010«к желаемому действию.Обновление: это неверно. Это НЕ маршрутизируется правильно, я ошибся. См. Связанный вопрос, связанный в принятом ответе.

Моя проблема в том, что когда я использую Html.ActionLink () для генерации ссылки для этого маршрута, онне URL-кодирует дату и я получаю недействительные URL, такие как "/ Foo / 100 / Редактировать / 01/21/2010».

Есть ли способ заставить инфраструктуру маршрутизации кодировать значения для меня? Кажется неправильным, что мне приходится вручную кодировать URL-адреса данных, которые я передаю HTML-помощникам.

Ответы на вопрос(4)

Ваш ответ на вопрос