C# 标签助手使用net core 3.1 LTS路由链接错误
我使用ASP.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?}");
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将用作查询字符串