路径控制器位于子文件夹中

时间:2013-06-18 08:08:23

标签: c# asp.net-mvc asp.net-mvc-3

我有一个MVC3项目,在Controllers文件夹中有一个“sub”文件夹。现在我想创建一个路径到该子文件夹内的控制器。但是我该怎么做呢?

这对我来说似乎不起作用:

context.MapRoute("Test", "SubFolder/Test",
            new { Controller = "SubFolder/Test", Action = "Index" });

所以子文件夹的名称是SubFolder,在那里我有一个名为TestController.cs的控制器。我该如何为它创建MapRoute?

2 个答案:

答案 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));
}

Getting Started with MvcCodeRouting