ASP.NET MVC 3 Url.Action соответствия - PullRequest
3 голосов
/ 21 апреля 2011

У меня определены следующие два маршрута:

routes.MapRoute(null, "" // ~/  
                ,new { controller="Products", action="List", page=1 });

routes.MapRoute(null, "{category}/Page{page}" // ~/CategoryName/Page21  
                , new { controller = "Products", action = "List", page = 1 }
                , new { page = @"\d+" } //page must be numerical
                );

Я создаю URL с использованием этого кода в представлении, используемом ProductsController: Url.Action("List", new {page=p, category=Model.CurrentCategory})

При текущей конфигурации я получаю этот URL: / Riding / Page2

Однако, если я опущу параметр page по умолчанию из первого маршрута, я получу этот URL вместо этого: /? Category = Riding & page = 2

Мне кажется, что Url.Action() может совпасть с обоими маршрутами и принимает решение использовать второй маршрут, если у меня указан параметр page по умолчанию, указанный в первом маршруте, но я выбираю использовать первый маршрут, если этот параметр не указан.

Учитывая, что я предоставляю значение для параметра page , почему исключение его из значений по умолчанию для маршрута может повлиять на возвращаемый URL-адрес?

Спасибо!

1 Ответ

1 голос
/ 21 апреля 2011

Попробуйте установить пакет NuGet Glimpse .У него отличная отладка маршрута, и он может вам помочь.

Вот сообщение Скотта Ханселана о том, как его использовать: Пакет NuGet недели # 5

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...