ASP.NET Core 8 MVC中Tag Helpers生成区域链接路径异常求助
解决ASP.NET Core MVC区域Tag Helper链接生成异常问题
问题原因
路由匹配按注册顺序执行,你当前先注册了default路由、后注册areaRoute,导致Tag Helper生成链接时优先匹配不带区域的默认路由,只能将area参数转为查询字符串,而非遵循区域路由规则生成路径。
解决方案
调整路由注册顺序,将区域路由(areaRoute)放在默认路由(default)之前:
// 先注册区域路由 app.MapControllerRoute( name: "areaRoute", pattern: "{area:exists}/{controller=Home}/{action=Index}/{id?}"); // 再注册默认路由 app.MapControllerRoute( name: "default", pattern: "{controller=Home}/{action=Index}/{id?}");
验证要点
- 确认控制器已添加
[Area("Admin")]特性 - 确认
~/Areas/Admin/Views/_ViewImports.cshtml中已导入Tag Helper(通常为@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers)
调整后,<a asp-area="Admin" asp-controller="Home" asp-action="Index"></a>会正确生成~/Admin/Home/Index(可简化为~/Admin)的链接。
内容的提问来源于stack exchange,提问作者Sina Abbaszadeh
相关产品推荐
相关产品推荐

