У меня есть приложение asp.net mvc с маршрутом, похожим на:
routes.MapRoute("Blog",
"{controller}/{action}/{year}/{month}/{day}/{friendlyName}",
new { controller = "Blog", action = "Index", id = "", friendlyName="" },
new { controller = @"[^\.]*",
year = @"\d{4}",
month = @"\d{2}",
day = @"\d{2}" }
);
Моя подпись метода действия контроллера выглядит так:
public ActionResult Detail(int year, int month, int day, string friendlyName)
{ // Implementation... }
На мой взгляд, я делаю что-то вроде:
<%= Html.ActionLink<BlogController>(item => item.Detail(blog.PostedOn.Year, blog.PostedOn.Month, blog.PostedOn.Day, blog.Slug), blog.Title) %>
Хотя URL-адрес, созданный с помощью ActionLink, работает, он использует переменные строки запроса, а не перезапись URL-адреса.
Например, он будет производить / blog / detail / my-slug? Year = 2008 & month = 7 & day = 5 вместо / blog / detail / 2008/07/05 / my-slug
Есть ли способ получить универсальную версию ActionLink для правильного заполнения целочисленных значений, чтобы URL получался, как и ожидалось?
Спасибо
Jim