誰かがこの問題に光を当ててくれませんか、それは私を夢中にさせます!
ルート:
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: ~/Order/PayPalNotify/9/adfaf (まさに私が期待したもの) !!!
デバッガーは、ルート DefaultOrderingRoute と DefaultDealRoute が一致していることも示しています (ルートに制約があるため、これは予想していませんでした!!)。
また、一致したルートが次のとおりであることも示しています。
一致したルート: {controller}/{action}/{id}/{slug}
ルートデータを使用:
controller: Deal
action: Details
id: 9
slug: adfaf
city: Athens
category: All
これはどのように可能ですか?? 私は何を間違っていますか?
PS。URL を再発行すると、正しいルートが実行されることに気付きました!!!