ASP.NET 具有区域的核心 2 默认路由

ASP.NET Core 2 default route having areas

cI 查看了有关区域路由的各种帖子,但我仍然无法解决我的问题。

我想以有两条路线的方式拆分我的申请。

每个区域中都有HomeController和对应于操作的适当方法。

我希望每当用户登陆任何 1 级路线时,即:

指向/Areas/Website/{controller}/{action}

或者

/Areas/Panel/{controller}/{action}

我当前的 MVC 路线是:

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

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

但它不起作用,可能是因为我不完全理解如何告诉路由器默认使用 Website 区域。我在控制器本身之前尝试了各种指令,但它没有用。

能请教一下吗?

提前谢谢你。

它不起作用的一个原因是您以错误的顺序注册了路由。路线从路线的顶部到底部进行评估 table,第一场比赛获胜。

另一个问题是,如果你想让 "default" 路由直接请求到 Website 区域,你需要将它变成区域路由(使用 MapAreaRoute 扩展方法) .

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

    routes.MapAreaRoute(
        name: "default",
        areaName: "Website",
        template: "{controller=Home}/{action=Index}/{id?}");
});

参考: