【问题标题】:Why cant I use tag helpers to generate links to my Area?为什么我不能使用标签助手生成指向我的区域的链接?
【发布时间】: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


【解决方案1】:

根据您的描述,我猜您可能错过了该区域的 addTagHelper。所以所有的tagheler都不能正常工作。

我建议您可以尝试创建一个新的_ViewImports.cshtml 或将默认视图文件夹的_ViewImports.cshtml 移动到应用程序根路径并添加taghelper 代码。

@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers

图片:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-07
    • 2019-01-03
    • 2023-03-05
    • 2021-05-18
    • 1970-01-01
    • 1970-01-01
    • 2017-11-27
    • 1970-01-01
    相关资源
    最近更新 更多