В моем тестовом проекте MVC3 отображается следующий маршрут -
routes.MapRoute(
"TestRoute",
"test/{DateFrom}/{DateTo}",
new { controller = "Home", action = "TestRoute" }
);
Затем я создаю ссылку в представлении следующим образом -
@Html.ActionLink("Test Link", "TestRoute", new
{
DateFrom = new DateTime(2006, 02, 16),
DateTo = new DateTime(2008, 04, 22)
})
Который при рендеринге выводит этот URL -
/test/02/16/2006%2000%3a00%3a00/04/22/2008%2000%3a00%3a00
Как видите, инфраструктура вызвала ToString()
для параметров DateTime
и затем закодировала результат.
Я бы хотел отформатировать параметры маршрута DateTime, чтобы они выводились как "гггг-ММ-дд" .
Очевидно, я могу указать формат при построении ссылки на действие, например, -
@Html.ActionLink("Test Link", "TestRoute", new
{
DateFrom = new DateTime(2006, 02, 16).ToString("yyyy-MM-dd"),
DateTo = new DateTime(2008, 04, 22).ToString("yyyy-MM-dd")
})
Однако мы знаем, что это грязно, громоздко и не СУХОЙ.
Я пытался использовать атрибут [DisplayFormat(DataFormatString = "{0:dd-MM-yyyy}")]
в свойствах модели, надеясь, что это был ответ, однако кажется, что они учитываются только при создании форм редактора.
К вашему сведению, если я вручную введу параметры DateTime
в URL в моем браузере (например, / test / 2006-02-16 / 2008-04-22), параметры будут правильно проанализированы, так что это всего лишь случай получения их отформатировали так, как я хочу.