ASP:用于在不同命名空间中具有相同名称的控制器的NET MVC4 url​​路由

时间:2013-03-13 13:05:09

标签: asp.net-mvc-4 controller url-routing subdirectory



在我的Asp.NET MVC4 Web项目中,我有许多控制器,我想将它们放在“控制器”文件夹下的子目录中。某些控制器由于其主要作业而具有相同的名称,但它们将被置于不同的子目录下,这意味着不同的名称空间。我想为这些控制器做一个url路由。如何使路由考虑存在具有相同名称的控制器的命名空间?你能在Global.asax文件中显示一些代码吗?
非常感谢。

2 个答案:

答案 0 :(得分:6)

你需要几个MapRoute-s - 每个命名空间至少有一个。

 // match all controllers in first namespace
 routes.MapRoute(
    name: "Namespace1Routes",
    url: "path1/{controller}/{action}/{id}",
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional },
    namespaces: new[] { "My.Namespace1" }
 );

 // match all controllers in second and third namespaces
 routes.MapRoute(
    name: "Namespace2Routes",
    url: "path2/{controller}/{action}/{id}",
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional },
    namespaces: new[] { "My.Namespace2", "My.Namespace3" }
 );

答案 1 :(得分:1)

routes.MapRoute(
"Home",
"Index/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional },
new string[] { "Project.Controllers" }

);

  

Project.Controllers -is namespace