asp.net-core-3.1 - asp-area 标签助手如何与区域路由一起使用?
问题描述
我有以下 HTML
<a asp-area="Admin" asp-controller="Page" asp-action="PageTexts" asp-route-pageId="1">
Homepage
</a>
这会生成a
带有错误 URL 地址的以下属性,因为area
用作 anparameter
而不是用作directory
,因此以下代码不起作用。
<a href="/Page/PageTexts?pageId=1&area=Admin">Homepage</a>
相反,我需要的是这个 URL,admin
部分作为 URL 前缀
/admin/page/pagetexts?pageId=1
我在startup.cs中的路由如下
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
endpoints.MapControllerRoute(
name: "Admin",
pattern: "{area:exists}/{controller=Admin}/{action=Index}/{id?}");
endpoints.MapRazorPages();
});
我的区域文件夹结构如下
我的管理控制器有Area
注释属性
namespace Web.Areas.Admin.Controllers
{
[Area("Admin")]
public class PageController : Controller
我错过了什么?
解决方案
我修复了 UseEndpoints 中间件,我在其中切换MapControllerRoute
,MapAreaControllerRoute
现在它可以正常工作。
app.UseEndpoints(endpoints =>
{
endpoints.MapAreaControllerRoute(
name: "Admin",
areaName: "Admin",
pattern: "Admin/{controller=Admin}/{action=Index}/{id?}");
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
endpoints.MapRazorPages();
});
推荐阅读
- python - Tensorflow 2.0 DQN action_spec 屏蔽
- powershell - 使用 Powershell 7 登录网页
- java - 无法压缩 CSV 文件 Java
- bootstrap-4 - 如何在 1 行中显示 codeigniter 3 中的循环数据
- python - 如何将此列表转换为字符串?
- php - 无法迭代的数组数据(PHP)
- assembly - 有多少 x86 指令组成一个 for 循环迭代?
- angular - 在 Chartjs 版本 3.5.1 为折线图设置背景颜色时遇到问题
- arrays - 使用应用脚本中的数组从 for 循环设置多个值
- python - plotly scattermapbox:添加注释/文本