asp-action tag helper 无法使用端点路由正确创建区域 link

asp-action tag helper does not create the Area link properly with Endpoint Routing

我正在使用 .net 核心 3.1.1

当我使用这样的 asp-action 时在 mvc 区域

<a asp-action="Index2">Index2</a>

它没有正确创建我想要的link(不创建区域名称)

它创建的link:

http://localhost:49770/Home/Index2

但这是正确的link:

http://localhost:49770/admin/Home/Index2

我使用端点路由如下:

app.UseEndpoints(endpoints =>
        {
            endpoints.MapControllerRoute(
                name: "default",
                pattern: "{controller=Home}/{action=Index}/{id?}");

            endpoints.MapAreaControllerRoute(
                "area",
                "Admin",
                "{area:exists}/{controller=Home}/{action=Index}/{id?}"

            );
        });

但是当我使用旧版本的路由 (UseMvc) 时,如下所示,它会正确创建 link

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

您应该修改顺序,使区域路线优先:

endpoints.MapAreaControllerRoute(
    "area",
    "Admin",
    "{area:exists}/{controller=Home}/{action=Index}/{id?}"


endpoints.MapControllerRoute(
    name: "default",
    pattern: "{controller=Home}/{action=Index}/{id?}");

这样 <a asp-action="Index2">Index2</a> 将创建 link 到同一区域的操作方法。