在早期版本的ASP.NET中,并使用MVC 5,我可以在AreaRegistraion中设置以下路由:

context.MapRoute(
    "pfrecent",
    "Forums/Recent/{page}",
    new { controller = ForumController.Name, action = "Recent", page = 1 },
    new[] { "PopForums.Controllers" });

这会将/Forums/Recent路由到论坛控制器及其最近的操作。但是,我无法弄清楚如何使其在ASP.Net 5 / MVC 6中工作。我已将[Area("Forums")]添加到控制器类,并从Startup类使用了此路由:
routes.MapRoute(
    "pfrecent",
    "Forums/Recent/{page}",
    new { controller = ForumController.Name, action = "Recent", page = 1 });
routes.MapRoute(
    name: "areaRoute",
    template: "{area:exists}/{controller=Home}/{action=Index}/{id?}");

但是,它解析为/Forums/Forum/Recent?page=1。目的是继续使用/Forums/Recent

最佳答案

我们使用它来启用MVC 6中的区域:

        // Configure MVC routing
        app.UseMvc(routes =>
        {
            // Areas support
            routes.MapRoute(
                name: "areaRoute",
                template: "{area:exists}/{controller=Home}/{action=Index}/{id?}");

            // Default routing
            routes.MapRoute(
                name: "default",
                template: "{controller=Home}/{action=Index}/{id?}");
        });

第一条路线用于区域,第二条路线用于主要内容。

10-08 14:21