我非常熟悉Web窗体中的URL路由,并且对MVC路由有基本的了解,但遇到了一个我不确定如何连接的场景。我想将URL映射中不包含{controller}
的URL映射到控制器。
我想将以下URL映射到控制器“SectionHomePageController”
Books/{Action}
Cinema{Action}
Collections/{Action}
Games/{Action}
我知道路由的典型方式是{controller} / {action}所以我不确定如何将这些URL连接到控制器。那么如何连接这些URL呢?
答案 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
);