mvc在不同项目中具有相同名称的两个区域

时间:2012-08-13 22:43:37

标签: asp.net-mvc-3 asp.net-mvc-routing controllers areas

我有一个具有以下结构的项目:


- CMS.core
---地区
------管理员
---------控制器
- Site.Web
---地区
------管理员
---------控制器

每当我尝试路由到site.web/areas/admin/controllers下的控制器时,它似乎只会查看cms.core/areas/admin/controllers

这有意义吗?如何将mvc路由到位于不同项目中的同名的多个区域?

1 个答案:

答案 0 :(得分:0)

您需要提供控制器所在的命名空间..例如:

routes.MapRoute(
    "SiteWebAdminRoute",
    "site.web/areas/{controller}/{action}/{id}", 
    new { Area = "SiteWeb", controller = "Home", action = "Index", id = UrlParameter.Optional },
    new string[] { "Site.Web.Areas.Admin.Controllers" });

..或类似的东西。请注意底部的字符串数组。如果您查看Intellisense,它会向您显示此字符串数组表示此路由应查找控制器的任何名称空间。你可以对你的其他区域路线做同样的事情..除了你提供一个不同的命名空间来查看。