这是我经历了很长一段时间的烦恼,但现在我的客户要求我解决它。
在每个生成的路由中(通过非默认路由),将追加查询字符串值:“Area=
”
举个例子:
// RouteConfig.Register():
routes.MapRoute(
"ProfileDetails",
"{slug}",
new { controller = "Profile", action = "Details" }
);
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
要生成BadgeController.Index
操作的网址,将应用默认路由,结果将为/Badge
...这就是预期的结果。
但要生成ProfileController.Details(someUser)
操作的URL,将应用ProfileDetails路由,结果将为/someUser?Area=
...这将起作用,但?Area=
是不必要的,凌乱。
我的项目中没有任何区域。如何摆脱Area=
查询字符串值?我的所有路由都不是预定义的默认路由,而不仅仅是本例中的“ProfileDetails”。
我尝试从Global.asax文件中删除AreaRegistration.RegisterAllAreas()
,因为我认为这不是必需的。