这是我长期经历的烦恼,但现在我的客户要求我解决它。
在生成的每个路由(通过非默认路由)中,都会附加一个查询字符串值:“ 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
操作的 URL,将应用默认路由,结果将是/Badge
……这就是预期的结果。
但是要生成ProfileController.Details(someUser)
操作的 URL,将应用 ProfileDetails 路由,结果将是/someUser?Area=
......这将起作用,但这?Area=
是不必要且混乱的。
我的项目中没有区域。如何摆脱该Area=
查询字符串值?这发生在我所有不是预定义默认路由的路由上,而不仅仅是本示例中的“ProfileDetails”路由。
我已经尝试AreaRegistration.RegisterAllAreas()
从我的 Global.asax 文件中删除它,因为我认为它不是必需的。