Может ли кто-то пролить свет на эту проблему, это сводит меня с ума!Неправильный маршрут, выбранный в ASP.NET MVC 3
Маршруты:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"DefaultOrderingRoute", // Route name
"{controller}/{action}/{id}/{slug}", // URL with parameters
new { controller = "Order", slug = UrlParameter.Optional }, // Parameter defaults
new { controller = "^Order$" }
);
routes.MapRoute(
"DefaultImageRoute", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Image", }, // Parameter defaults
new { controller = "^Image$" }
);
routes.MapRoute(
"FooterRoute", //route for invoking actions for the Footer
"{controller}/{action}", // URL with parameters
new { controller = "Footer", }, // Parameter defaults
new { controller = "^Footer$" }
);
routes.MapRoute(
"DefaultDealRoute", // Route name
"{city}/{category}/{id}/{slug}", // URL with parameters
new { category = Deals.Globals.Global.CATEGORY_ALL_NAME, controller = "Deal", action = "Details", slug = UrlParameter.Optional }, // Parameter defaults
new { controller = "^Deal$", id = @"\d+" }
);
routes.MapRoute(
"DealRouteForCategory", // Route name
"{city}/{category}", // URL with parameters
new { city = "", category = Deals.Globals.Global.CATEGORY_ALL_NAME, controller = "Deal", action = "Details" }, // Parameter defaults
new { controller = "^Deal$" }
);
}
У меня есть добавить ссылку на routedebugger, чтобы увидеть, что происходит под капотом. Так что для выбранного URL:
http://my.SERVER.IP/VirtualDirectoryName/Order/PayPalNotify/9/blabla
URL, отладчик показывает следующее:
AppRelativeCurrentExecutionFilePath: ~/Заказ/PayPalNotify/9/adfaf (именно то, что я ожидал) !!!
Отладчик также показывает, что маршруты DefaultOrderingRoute и DefaultDealRoute сопоставлены (этого я не ожидал, так как у меня есть ограничения на маршруты!).
Он также показывает, что согласованный маршрут:
Сопрягано Маршрут: {контроллер}/{действие}/{ID}/{пробкового}
с данными по маршруту:
controller: Deal
action: Details
id: 9
slug: adfaf
city: Athens
category: All
Как это возможно?? Что я делаю не так?
PS. Я заметил, что по переиздавая URL-адрес, правильный маршрут выполняется!
Почему у вас нет '{controller}' и '{action}' на вашем маршруте по умолчанию? Вы пробовали переместить этот маршрут в начало списка? Поскольку маршрутизация будет соответствовать первому маршруту, он может удовлетворить. – mattytommo
@mattytommo Проблема заключается в том, что маршрутизация показывает правильную относительную часть URL (/ Order/PayPalNotify/9/blabla), но при этом токенизация этого результата дает нечто совершенно иное (см. Таблицу со значениями). Это то, что сводит меня с ума! Порядок маршрутов должен быть всегда от более конкретного маршрута до более общего маршрута (это то, что я практикую) –