Двоеточие в URL первого примера вызовет ошибку (неверный запрос), поэтому вы не можете сделать именно то, что ищете. Кроме этого, использование DateTime в качестве параметра действия наиболее возможно.
Если вы используете маршрутизацию по умолчанию, эта третья часть вашего примера URL-адреса будет собирать значение DateTime в качестве параметра {id}. Таким образом, ваш метод Action может выглядеть так:
public ActionResult Index(DateTime? id)
{
return View();
}
Возможно, вы захотите использовать Nullable Datetime, как и я, поэтому, если этот параметр не включен, он не вызовет исключения. Конечно, если вы не хотите, чтобы он назывался «id», добавьте еще одну запись маршрута, заменив {id} на ваше имя.
Пока текст в URL будет анализироваться на действительное значение DateTime, это все, что вам нужно сделать. Нечто подобное работает нормально и будет подхвачено в вашем методе Action без каких-либо ошибок:
<%=Html.ActionLink("link", "Index", new { id = DateTime.Now.ToString("dd-MM-yyyy") }) %>
Подвох в этом случае, конечно, в том, что я не включил время. Я не уверен, что есть какие-либо способы отформатировать (действительную) строку даты со временем, не представленным двоеточиями, поэтому, если вы ДОЛЖНЫ включить время в URL, вам может понадобиться использовать свой собственный формат и проанализировать результат обратно в DateTime вручную. Скажем, мы заменим двоеточие на "!" в действии ссылка: new { id = DateTime.Now.ToString("dd-MM-yyyy HH!mm") }
.
Ваш метод действия не сможет проанализировать это как дату, поэтому лучшая ставка в этом случае, вероятно, примет это как строку:
public ActionResult Index(string id)
{
DateTime myDate;
if (!string.IsNullOrEmpty(id))
{
myDate = DateTime.Parse(id.Replace("!", ":"));
}
return View();
}
Редактировать: Как отмечено в комментариях, есть некоторые другие решения, возможно, лучше, чем мое. Когда я изначально писал этот ответ, я полагал, что стараюсь сохранить суть формата даты и времени как можно лучше, но, очевидно, кодирование URL-адреса будет более правильным способом решения этой проблемы. +1 к комментарию Влада.