0

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

这似乎对我不起作用:

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

所以子文件夹的名称是SubFolder,在那里我有一个名为TestController.cs. 我怎样才能为此创建一个 MapRoute?

4

2 回答 2

5

没有控制器的子文件夹这样的概念。控制器只是 C# 类,您可以将其存储在任何您想要的地方。在您的路由配置中,您应该只提及控制器名称:

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

如果你想拥有两个同名的控制器,你需要在定义路由时指定命名空间约束:

context.MapRoute(
    "Test", 
    "SubFolder/Test",
    new { controller = "Test", action = "Index" },
    new[] { "MvcApplication.Controllers.SubFolder" }
);

因此,现在当您导航到 时http://example.com/subfolder/test,将执行 TestController 的 Index 操作。

于 2013-06-18T08:18:25.720 回答
0

如果您使用MvcCodeRouting,您可以将控制器嵌套在您想要的任意深度的子文件夹中,并且路由将基于命名空间,因此默认情况下将遵循文件夹的约定。

using System.Web.Routing;
using MvcCodeRouting;

void RegisterRoutes(RouteCollection routes) {

    routes.MapCodeRoutes(typeof(Controllers.HomeController));
}

MvcCodeRouting 入门

于 2015-11-19T13:42:11.777 回答