路由同名控制器和不同区域

时间:2016-11-10 17:11:10

标签: c# asp.net-mvc routing

我有2个相同的名称控制器,ShopController,一个是normal控制器(基本上是你通常放置它们的位置),另一个是在Admin区域。< / p>

以下是我的路线:

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区域一个,顶部一个连接到常规区域。

我尝试在这里根据另一个答案添加名称空间,但它们并没有什么不同,即使我在其中加入一些胡言乱语也没有什么区别。

如何让这些路线引用我想要的精确控制器?

1 个答案:

答案 0 :(得分:0)

将路线添加到路线集合时的顺序非常重要,引擎将查看该路线集合,并且将匹配该路线的第一个路线将被选为获胜者。

如果您的第一条路线匹配,则意味着它以 shop 开头,然后它会点击控制器Shop,否则它将继续匹配RouteData集合上的结构。没有必要在这种情况下添加命名空间

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