我有一个MVC3项目,在Controllers
文件夹中有一个“sub”文件夹。现在我想创建一个路径到该子文件夹内的控制器。但是我该怎么做呢?
这对我来说似乎不起作用:
context.MapRoute("Test", "SubFolder/Test",
new { Controller = "SubFolder/Test", Action = "Index" });
所以子文件夹的名称是SubFolder
,在那里我有一个名为TestController.cs
的控制器。我该如何为它创建MapRoute?
答案 0 :(得分:5)
控制器的子文件夹没有这样的概念。控制器只是C#类,您可以在任何地方存储它们。在路由配置中,您只应提及控制器名称:
context.MapRoute(
"Test",
"SubFolder/Test",
new { controller = "Test", action = "Index" }
);
如果您想要2个具有相同名称的控制器,则需要在定义路径时指定命名空间约束:
context.MapRoute(
"Test",
"SubFolder/Test",
new { controller = "Test", action = "Index" },
new[] { "MvcApplication.Controllers.SubFolder" }
);
现在,当您导航到http://example.com/subfolder/test
时,将执行TestController的Index操作。
答案 1 :(得分:0)
如果您使用MvcCodeRouting,您可以根据需要将控制器嵌套在子文件夹中,并且路由将基于命名空间,因此默认情况下将遵循文件夹的约定。
using System.Web.Routing;
using MvcCodeRouting;
void RegisterRoutes(RouteCollection routes) {
routes.MapCodeRoutes(typeof(Controllers.HomeController));
}