Asp.Net MVC: Как получить Html.ActionLink для отображения целочисленных значений правильно?

голоса
5

У меня есть 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 переписывания.

Например, он будет производить / блог / подробности / My-слизняка? Год = 2008 & месяц = ​​7 & день = 5 вместо / блог / деталь / 2008/07/05 / мой-тихоход

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

благодаря

Джим

Задан 28/09/2008 в 19:03
источник пользователем
На других языках...                            


2 ответов

голоса
4

Тот факт, что ваши параметры являются целыми числами, не имеет ничего общего с вашей проблемой. Определение маршрута вы хотите использовать это на самом деле не используется, поэтому сгенерированный URL используют параметры строки запроса, а не строить структуру, которую вы хотите.

Маршруты оцениваются сверху вниз, так что вы, вероятно, имеют более общее определение маршрута, который удовлетворяющая необходимые генерации URL. Попробуйте переместить маршрут, отображаемый на этом посту в верхней части ваших определений маршрутов, и вы увидите, что ваша генерироваться связь, как и следовало ожидать. Тогда посмотрите на изменения ваши определения маршрута либо быть более конкретным, или просто перемещать их по мере необходимости.

Отладка этих типов сценариев может быть огромной болью. Я хотел бы предложить скачивание Phil Хайка в маршруте отладчика , это сделает вашу жизнь намного проще.

Ответил 28/09/2008 в 19:22
источник пользователем

голоса
2

Я хотел бы предложить форматирование года, месяц и день, как Strings вместо этого. Подумайте об этом: Вы будете делать какие-либо математические на этих «целых»? Скорее всего, нет, так что на самом деле нет никакого смысла для создания их числа. После того, как вы их как строки вы можете заставить ведущий формат нуля.

Ответил 28/09/2008 в 19:15
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more