C# 标签助手使用net core 3.1 LTS路由链接错误

C# 标签助手使用net core 3.1 LTS路由链接错误,c#,asp.net-core,C#,Asp.net Core,我使用ASP.NET Core 3.1 LTS和如下的路由设置 app.UseEndpoints(endpoints => { endpoints.MapControllerRoute( name: "default", pattern: "{controller=Home}/{action=Index}/{id?}");

我使用ASP.NET Core 3.1 LTS和如下的路由设置

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

                endpoints.MapControllerRoute(
                    name: "Backend",
                    pattern: "{area:exists}/{controller=Home}/{action=Index}");

                 endpoints.MapRazorPages();
            });
我的区域剃须刀页面有一个标记助手

<a class="btn btn-primary btn-sm" asp-area="Backend" asp-controller="Article" asp-action="Create"> Create</a>
通常这个链接是/backend/article/create

但结果是/article/create?area=backend

为什么结果是错误的

路线的登记顺序很重要

app.UseEndpoints(endpoints => { // register this route before the default one endpoints.MapControllerRoute( name: "Backend", pattern: "{area:exists}/{controller=Home}/{action=Index}"); endpoints.MapControllerRoute( name: "default", pattern: "{controller=Home}/{action=Index}/{id?}"); endpoints.MapRazorPages(); }); 然后输入以下代码

<a asp-area="Backend" asp-controller="Article" asp-action="Create"> Create</a>
<a asp-area="AnAreaThatDoesnotExist" asp-controller="Article" asp-action="Create"> Create</a>
将生成如下路由:

<a href="/Backend/Article/Create"> Create</a>
<a href="/Article/Create?area=AnAreaThatDoesnotExist"> Create</a>
注意,我们指定了一个根本不存在的参数area=AnAreaThatDoesnotExist,然后area=AnAreaThatDoesnotExist将用作查询字符串