2



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

4

2 回答 2

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" }
 );
于 2013-03-13T13:16:14.187 回答
1
routes.MapRoute(
"Home",
"Index/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional },
new string[] { "Project.Controllers" }

);

Project.Controllers -is 命名空间

于 2013-03-13T13:11:17.043 回答