微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ASP.NET Core 5 AnchorTagHelper 在 razor 页面上不起作用

如何解决ASP.NET Core 5 AnchorTagHelper 在 razor 页面上不起作用

我的 Razor _layout.cshtml 页面中有一个简单的锚标记助手;然而,第一个没有出现网址,但在第二个。

asp-for 属性一个简单的 const 字符串中提取值,并且两个标签助手都从同一个地方获取它。

public static class PageNavigation
{
    public const string Manage = "/account/manage";
    public const string logout = "/account/logout";
}

_layout.cshtml 页中的标签助手:

<a asp-page="@PageNavigation.Manage" class="dropdown-item notify-item">
    <i class="mdi mdi-account-circle mr-1"></i>
    <span>My Account</span>
</a>

<a asp-page="@PageNavigation.logout" class="dropdown-item notify-item">
    <i class="mdi mdi-account-circle mr-1"></i>
    <span>logout</span>
</a>

输出

<a class="dropdown-item notify-item" href="">
    <i class="mdi mdi-account-circle mr-1"></i>
    <span>My Account</span>
</a>
<a class="dropdown-item notify-item" href="/account/logout/">
    <i class="mdi mdi-logout mr-1"></i>
    <span>logout</span>
</a>

如你所见,第一个标签没有href属性值;这有点奇怪,我不知道为什么,不幸的是,我无法轻松调试到 AnchorTagHelper 本地源代码中,我只在输出编写器类中结束,而不是实际的标签助手源。

编辑:

进一步的编辑表明我似乎只能以这种方式输出一个标记助手之外的任何东西......无论创建多少,以任何顺序,只有“注销”一个正确显示

让我使用此功能的唯一方法是使用带有 href 属性的普通锚标记

一个单独的点上;这让我想知道锚标记助手对于 Razor 页面的意义何在。您无法以强类型方式将其映射到特定的 Razor 页面,即使使用“路由”属性,它也是一种像往常一样添加标记的冗长方式。

解决方法

请参阅此处的注释 3:https://www.learnrazorpages.com/razor-pages/tag-helpers/anchor-tag-helper

asp-page 属性需要不带扩展名的 文件 的路径,而不是文件夹的路径。

public static class PageNavigation
{
    public const string Manage = "/account/manage/index";
    public const string Logout = "/account/logout";
}

编辑 - 在您单独的点上,给定正确页面名称的锚标记助手将为该页面生成正确的 URL,该 URL 可能不一定与其文件路径匹配。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。