2013-03-13 74 views
1



在我的Asp.NET MVC4 web项目NET MVC4 URL路由具有相同名称的控制器,我有很多的控制器和我想要把它们放进文件夹下“控制器”的子目录。一些控制器由于其主要工作而具有相同的名称,但是它们将被置于不同的子目录下,这意味着不同的名称空间。我想为这些控制器做一个URL路由。我怎样才能让路由考虑名称空间,即具有相同名称的控制器存在?你能在Global.asax文件中显示一些代码吗?
非常感谢。ASP:在不同的命名空间

回答

6

你需要几个图路线-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" } 
); 
+0

因此,对于在不同名称空间中具有相同名称的每个控制器,您是否需要每个控制器的路由呢? – Andrew 2014-12-18 18:06:34

+0

不,您需要为每个路径+名称空间对配置一个路由,无论该名称空间中有多少个控制器。 – Dmitry 2014-12-23 09:04:39

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

);

Project.Controllers -is命名空间

相关问题