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 到同一区域的操作方法。
我正在使用 .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 到同一区域的操作方法。