首先,路线如下:
routes.MapRoute("PlaceRoutes", "{b}/Places/Show/{id}/{subaction}",
new { b = "yokota-ab-japan", controller = "Places", action = "Show", id = UrlParameter.Optional, subaction = UrlParameter.Optional }
);
这个网址:localhost/yokota-ab-japan/Places/Show/4b5bfc7ef964a520332029e3
不匹配,
这个网址:localhost/yokota-ab-japan/Places/Show?id=4b5bfc7ef964a520332029e3
做。
事实上,当使用 /id 时,它只是简单地路由回根主页。当我在调试器中运行它时,它甚至从未触及 Places/Show 动作,它只是简单地返回。但是,如果我使用 ?id= 它路由很好。
我以前从未发生过这种情况……非常困惑。我尝试使用 Phil Haack 的路由调试器,但由于它甚至没有触及路由,只是循环回到主页,因此调试器无济于事。
编辑 - 这是完整的路线列表
public static void RegisterRoutes(RouteCollection routes) {
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute("PlaceRoutes", "{b}/Places/Show/{id}/{subaction}",
new { b = "yokota-ab-japan", controller = "Places", action = "Show", id = UrlParameter.Optional, subaction = UrlParameter.Optional }
);
routes.MapRoute("BaseRoutes", "{b}/{controller}/{action}/{id}",
new { b = UrlParameter.Optional, controller = "Home", action = "Index", id = UrlParameter.Optional },
new { controller = "Home|Member|Places|Search|Admin" }
);
routes.MapRoute(
"NullBase",
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional },
new { controller = "Home|Member|Places|Search|Admin|Auth" }
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}