У меня определены следующие два маршрута:
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-адрес?
Спасибо!