路由相同的控制器和不同的区域

本文关键字:区域 控制器 路由 | 更新日期: 2023-09-27 18:17:23

我有两个同名控制器,ShopController,一个是normal控制器(基本上你通常把它们放在那里),另一个是在一个叫做Admin的区域。

这是我的路线:

routes.MapRoute("Shop", "shop/{action}/{id}", new { controller = "Shop", action = "Index", id = UrlParameter.Optional }, new[] { "CMS.Controllers" });
routes.MapRoute("CategoriesrPartial", "Admin/Shop/CategoriesNavPartial", new { controller = "Shop", action = "CategoriesNavPartial" }, new[] { "CMS.Areas.Admin.Controllers" });

底部接Admin区一号,顶部接常规区一号。

我试着根据SO的另一个答案添加名称空间,但它们没有区别,即使我在里面放了一些胡言乱语也没有区别。

我如何让这些路由指向我想要的确切控制器?

路由相同的控制器和不同的区域

当你向路由集合中添加路由时,顺序是重要的,引擎将查找该路由集合,第一个与该路由匹配的路由将被选为获胜者。

如果你的第一个路由匹配,意味着它以单词shop开头,那么它将击中控制器shop,如果不匹配,它将继续在RouteData集合上匹配结构。在这种情况下,不需要添加名称空间

shop/{action}  -> should start with shop word then you need to specify the action in your anonymous object