如何将不包含{controller}的URL映射到控制器?

时间:2013-06-18 02:53:52

标签: asp.net-mvc-4 url-routing

我非常熟悉Web窗体中的URL路由,并且对MVC路由有基本的了解,但遇到了一个我不确定如何连接的场景。我想将URL映射中不包含{controller}的URL映射到控制器。

我想将以下URL映射到控制器“SectionHomePageController”

Books/{Action}
Cinema{Action}
Collections/{Action}
Games/{Action}

我知道路由的典型方式是{controller} / {action}所以我不确定如何将这些URL连接到控制器。那么如何连接这些URL呢?

2 个答案:

答案 0 :(得分:3)

映射一条路线(应该高于您的常规{controller}/{action}/{id}路线,因此它优先)有一个约束,默认为SectionHomePageController

        routes.MapRoute(
            name: "SectionHomePage",
            url: "{prefix}/{action}",
            constraints: new { prefix = @"(Books|Cinema|Collections|Games)" },
            defaults: new { controller = "SectionHomePageController", action = "Index" }
        );

请注意,您现在将无法拥有BooksController,CinemaController等,因为此路线将覆盖默认路线。

答案 1 :(得分:0)

routes.MapRoute(
                "SomeRoute",                                              // Route name
                "Collections/SomeAction",                           // URL with parameters
                new { controller = "SectionHomePageController", action = "SomeActionOnController", id = "" }  // Parameter defaults
            );