【发布时间】:2020-11-24 16:46:53
【问题描述】:
我的 .net core 3.1 网络应用程序中有一个区域路由设置:
Startup.cs / Configure():
app.UseEndpoints(endpoints =>
{
endpoints.MapAreaControllerRoute(name: "secure-route", areaName: "Secure", pattern: "Secure/{controller=Dashboard}/{action=index}/{id?}");
});
此路由工作正常,“/secure”下的所有页面都工作正常。但是,当我尝试在任何视图中添加链接或发布表单时,会以以下格式给出奇怪的 url:
https://localhost:44370/MyController/Edit?area=secure
这应该是:https://localhost:44370/Secure/MyController/Edit
有什么想法吗?
我已经尝试了所有标签助手的问题,但问题似乎出在路由本身。 这些都不起作用:
<form method="post" asp-controller="MyController" asp-action="Edit" asp-area="secure">
<form method="post" asp-controller="MyController" asp-action="Edit">
<button asp-controller="MyController" asp-action="EditMyEntity">Click Me</button>
【问题讨论】:
-
你把
[Area("secure")]放在MyController.cs上了吗?并且改用“这些都不起作用”,他们是否发布到错误的区域?还是没有正确生成 URL? -
我为路由中的每个控制器都有一个 SecureBaseController,就像这样 [Authorize(Roles = "Administrator")] [Area("Secure")] public class BaseAdminController : Controller {} 。上述所有方法都给出相同的 URL 格式:localhost:44370/MyController/Edit?area=secure,即 404
-
您是否也按照
MapAreaControllerRoute()定义了默认路由? -
@klasmack 有更新吗?我的回复对你有帮助吗?
标签: asp.net-mvc asp.net-core .net-core asp.net-mvc-routing asp.net-core-tag-helpers