使用 asp 页面 TagHelper 时链接不呈现

2023-11-23

我有一个页面在使用时不呈现 HTML 中的链接asp-page标签助手。我以前见过这个,但这是由于拼写错误或页面不存在造成的。

在下面的 _Layout 中的两个链接中,

  • 用户渲染为http://localhost/ReportGroups/Admin/Users
  • 角色呈现为http://localhost/ReportGroups
  • 手动导航到角色会导致 404 错误。

_布局.cshtml

该链接是管理菜单的一部分。注释掉的 FontAwesome 图标是我测试的一部分。/Admin/Users工作正常,但是/Admin/RoleList不起作用。之前是/Admin/Roles但我分部分构建了该文件的新副本,以查看是否有任何内容引发错误,或者它是否是保留字。

@if (User.Identity.IsAuthenticated)
{
    if (User.IsInRole("Admin"))
    {
        <div id="nav-admin">
            <ul>
                <li><a asp-page="/Admin/Users"> Users</a></li>@*< i class="fas fa-user-secret" title="Users"></i>*@
                <li><a asp-page="/Admin/RoleList"> Roles</a></li>
                @*<i class="fas fa-id-card" title="Roles"></i>*@
            </ul>
        </div>
    }
}

角色列表.cshtml

@page "{roleId}/{userId}"
@model RoleListModel
@{
    ViewData["PageTitle"] = "Admin Tools - Roles";
    ViewData["IconClass"] = "";
    ViewData["IconTitle"] = "Roles";
}

<table>
    <thead>
        <tr>
            <th>Role</th>
            <th>User Name</th>
            <th>First Name</th>
            <th>Last Name</th>
            <th>&nbsp;</th>
        </tr>
    </thead>
    <tbody>
        @foreach (ApplicationRole role in Model.AppRoles)
        {

            <tr>
                <td colspan="4"><strong>@role.Name</strong></td>
                <td>
                    <a asp-page="/App/RoleEdit" asp-route-roleId="@role.Id"><i class="fas fa-edit"></i></a>
                </td>
            </tr>

            IList<ApplicationUser> usersOfRole = Model.AppRoleUsersDict[role];
            foreach (ApplicationUser user in usersOfRole)
            {
                <tr>
                    <td>@role.Name</td>
                    <td>@user.UserName</td>
                    <td>@user.FirstName</td>
                    <td>@user.LastName</td>
                    <td>
                        <form method="post" asp-page-handler="delete">
                            <button type="submit" asp-page="/App/GroupEdit" asp-page-handler="delete" asp-route-roleId="@role.Id" asp-route-userId="@user.Id">
                                <i class="fas fa-trash-alt" style="color:red"></i>
                            </button>
                        </form>
                    </td>
                </tr>
            }
        }

    </tbody>
</table>

角色列表.cshtml.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Ctrack.ReportGroups.Data;
using Ctrack.ReportGroups.Identity;
using Microsoft.AspNetCore.Identity;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;

namespace Ctrack.ReportGroups.Pages
{
    public class RoleListModel : PageModel
    {
        private readonly UserManager<ApplicationUser> _userManager;
        private readonly RoleManager<ApplicationRole> _roleManager;
        private readonly ApplicationDbContext _db;

        public RoleListModel(
            ApplicationDbContext db,
            UserManager<ApplicationUser> userManager,
            RoleManager<ApplicationRole> roleManager)
        {
            _db = db;
            _userManager = userManager;
            _roleManager = roleManager;
        }

        public IList<ApplicationRole> AppRoles { get; set; }

        public IDictionary<ApplicationRole, IList<ApplicationUser>> AppRoleUsersDict { get; set; }

        /// <summary>
        /// List all Roles, and the Users assigned to them.  Exposes a form to delete the relationship for each user.
        /// </summary>
        /// <returns>Task&gt;IActionResult&gt;</returns>
        public async Task<IActionResult> OnGetAsync()
        {

            AppRoles = _roleManager.Roles.ToList();
            AppRoleUsersDict = new Dictionary<ApplicationRole, IList<ApplicationUser>>();

            foreach (ApplicationRole role in AppRoles)
            {
                IList<ApplicationUser> usersOfRole = await _userManager.GetUsersInRoleAsync(role.Name);
                AppRoleUsersDict.Add(role, usersOfRole);
            }

            return Page();
        }

        /// <summary>
        /// Removes a role from a User
        /// </summary>
        /// <param name="roleId"><see langword="string"/> containing RoleId</param>
        /// <param name="userId"><see langword="string"/> containing UserId</param>
        /// <returns>Task&gt;IActionResult&gt;</returns>
        public async Task<IActionResult> OnPostDeleteAsync(string roleId, string userId)
        {
            ApplicationUser user = await _userManager.FindByIdAsync(userId);
            ApplicationRole role = await _roleManager.FindByIdAsync(roleId);

            try
            {
                await _userManager.RemoveFromRoleAsync(user, role.Name);
                TempData["Notification"] = $"Successfully removed Role {role.Name} from User {user.UserName}.";
            }
            catch (Exception ex)
            {
                TempData["ErrorMessage"] = $"Exception {ex.GetType()} encountered while removing Role {role.Name} from User {user.UserName}.";
            }
            return Page();
        }
    }
}

_ViewImports.cshtml

@using Microsoft.AspNetCore.Identity
@using CtrackReportGroupsRtca
@using Ctrack.ReportGroups.Data
@using Ctrack.ReportGroups.Identity
@using System.Security.Claims
@using Microsoft.AspNetCore.Html;
@namespace Ctrack.ReportGroups.Pages
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers

我正在使用 .NET Core 2.2,并且遇到了类似的问题。我通过使用修复了它

asp-page="/ThePage/Index"

代替

asp-page="/ThePage"

但这可能掩盖了另一个根本问题。

第三者编辑

As John指出aspnetcore/问题/7656包含

在 asp.net core Razor Pages 中,asp 页面锚标记帮助程序不 如果我们不包含默认的“.../Index”,则创建“href” (索引)子文件夹内的页面。

and

这是设计使然。 asp-page 的参数是页面名称而不是 URL 路径。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 asp 页面 TagHelper 时链接不呈现 的相关文章

  • 更新面板工作速度非常慢

    我正在编写一个用户可以注册的应用程序 注册时 可以选择多个选项 并根据这些注册字段可见或不可见以及是否必需 我想出了一个想法 所有字段都将位于 updatePanel 中 当用户更改注册选项时 我将在服务器端设置这些字段的可见性 它可以工作
  • 如何在类文件中使用 Url.Action() ?

    如何在 MVC 项目的类文件中使用 Url Action Like namespace 3harf public class myFunction public static void CheckUserAdminPanelPermissi
  • 有些有助于理解“产量”

    在我不断追求少吸的过程中 我试图理解 产量 的说法 但我不断遇到同样的错误 someMethod 的主体不能是迭代器块 因为 System Collections Generic List 不是迭代器接口类型 这是我被卡住的代码 forea
  • 无法注册时间触发的后台任务

    对于 Windows 8 应用程序 在 C Xaml 中 我尝试注册后台任务 很难说 但我想我的后台任务已正确注册 但是当我单击调试位置工具栏上的后台任务名称时 我的应用程序停止工作 没有任何消息 我查看了事件查看器上的日志 得到 具有入口
  • Eigen 和 OpenMP:由于错误共享和线程开销而没有并行化

    系统规格 Intel Xeon E7 v3 处理器 4 插槽 16 核 插槽 2 线程 核心 Eigen 系列和 C 的使用 以下是代码片段的串行实现 Eigen VectorXd get Row const int j const int
  • C++中判断unicode字符是全角还是半角

    我正在编写一个终端 控制台 应用程序 该应用程序应该包装任意 unicode 文本 终端通常使用等宽 固定宽度 字体 因此要换行文本 只需计算字符数并观察单词是否适合一行并采取相应的操作 问题是 Unicode 表中的全角字符在终端中占用了
  • 在 C# 中检查 PowerShell 执行策略的最佳方法是什么?

    当你跑步时Get ExecutionPolicy在 PowerShell 中 它得到有效的执行政策 https learn microsoft com en us powershell module microsoft powershell
  • 如何使用 x64 运行 cl?

    我遇到了和这里同样的问题致命错误 C1034 windows h 未设置包含路径 https stackoverflow com questions 931652 fatal error c1034 windows h no include
  • 已发布的 .Net Core 应用程序警告安装 .Net Core,但它已安装

    我制作了一个 WPF 和控制台应用程序 供某人在我无法访问的私人服务器上使用 我使用 Visual Studio 2019 的内置 发布向导 来创建依赖于框架的单文件应用程序 当该人打开 WPF 应用程序时 他们会看到标准警告 他们单击 是
  • 如何递归取消引用指针(C++03)?

    我正在尝试在 C 中递归地取消引用指针 如果传递一个对象 那就是not一个指针 这包括智能指针 我只想返回对象本身 如果可能的话通过引用返回 我有这个代码 template
  • 不可变类与结构

    以下是类与 C 中的结构的唯一区别 如果我错了 请纠正我 类变量是引用 而结构变量是值 因此在赋值和参数传递中复制结构的整个值 类变量是存储在堆栈上的指针 指向堆上的内存 而结构变量作为值存储在堆上 假设我有一个不可变的结构 该结构的字段一
  • 在 C# 中为父窗体中的子窗体控件添加事件处理程序

    我有两种形式 一种是带有按钮和文本框的父表单 单击该按钮时 将打开一个对话框 该子窗体又包含一个文本框和一个按钮 现在我想要的是 每当子表单文本框中的文本更改时 父表单文本框中的文本会自动更改 为了获得这个 我所做的是 Form3 f3 n
  • 在 C 中使用枚举而不是 #defines 作为编译时常量是否合理?

    在 C 工作了一段时间后 我将回到 C 开发领域 我已经意识到 在不必要的时候应该避免使用宏 以便让编译器在编译时为您做更多的工作 因此 对于常量值 在 C 中我将使用静态 const 变量或 C 11 枚举类来实现良好的作用域 在 C 中
  • memcpy/memmove 到联合成员,这是否设置“活动”成员?

    重要说明 一些评论者似乎认为我是从工会抄袭的 仔细看memcpy 它从普通旧地址复制uint32 t 它不包含在联合中 另外 我正在复制 通过memcpy 到工会的特定成员 u a16 or u x in a union 不直接到整个联盟本
  • 如何解压 msgpack 文件?

    我正在将 msgpack 编码的数据写入文件 在编写时 我只是使用 C API 的 fbuffer 如 我为示例删除了所有错误处理 FILE fp fopen filename ab msgpack packer pk msgpack pa
  • C++:为什么 numeric_limits 对它不知道的类型起作用?

    我创建了自己的类型 没有任何比较器 也没有专门化std numeric limits 尽管如此 由于某种原因 std numeric limits
  • WPF DataGrid / ListView 绑定到数组 mvvm

    我们假设你有 N 个整数的数组 表示行数的整数值 在模型中 该整数绑定到视图中的 ComboBox Q1 如何将数组 或数组的各个项目 绑定到 DataGrid 或 ListView 控件 以便 当您更改 ComboBox 值时 只有那么多
  • EntityFramework 6.0.0.0 读取数据,但不插入

    我创建了一个基于服务的数据库 folderName gt Add New Item gt Data gt Service based Database文件到 WPF 应用程序中 然后我用过Database First方法并创建了Person
  • 在 System.Type 上使用条件断点时出错

    这是函数 public void Init System Type Type this Type Type BuildFieldAttributes BuildDataColumns FieldAttributes 我在第一行设置了一个断点
  • 是否允许全局静态标识符以单个 _ 开头?

    换句话说 可能static 文件范围 全局变量恰好以一个下划线开头 而不会产生与 C 实现发生名称冲突的可能性 https www gnu org software libc manual html node Reserved Names

随机推荐

  • Ruby / Rails 垃圾收集

    由于 http 是无状态的 因此对应用程序的每个请求都会创建一个新对象 Rails 如何清理未使用的对象 多久清理一次 简单的答案 Ruby 运行时有一个垃圾收集器 根据运行时 JRuby JVM 分代 GC IronRuby CLR 分代
  • 无法获取 git 扩展来将某些内容推送到 github SSH 问题

    我正在尝试使用 git 扩展 到目前为止我真的很喜欢它 但我无法推送到 github 以下命令在 git bash 中运行良好 git push origin master master 然后当我使用 git 扩展推送时我得到这个 C Pr
  • 检查Python非法变量名或关键字的网站[重复]

    这个问题在这里已经有答案了 我可能偶然发现了一个非法的变量名 pass Pass the monkey print pass 语法错误 语法无效 我知道某些关键字被禁止作为变量 是否有Pythonic相当于JavaScript 变量名称验证
  • 对字典列表进行排序

    我有一个字典值的集合 List lt gt 我需要排序 基本上每个字典都是一个 行 集合是一页行 一个简单的例子 var data new List
  • WPF:条件绑定与属性,XamlParseException 使用其中之一

    我遇到了问题Condition for a MultiTrigger 如果我执行以下操作
  • C 将参数作为 void-pointer-list 传递给从 LoadLibrary() 导入的函数

    我遇到的问题是我想创建一个通用命令行应用程序 可用于加载库 DLL 然后调用库 DLL 中的函数 函数名称在命令行上指定 参数也在实用程序命令行上提供 我可以使用动态加载的 DLL 访问外部函数LoadLibrary 功能 加载库后 我可以
  • 如何减少 ASP.NET 应用程序中的页面加载时间?

    如何减少 ASP NET 应用程序中的页面加载时间 特别是在与数据库交互时应该注意什么 e g 明智地使用视图状态 部署应用程序时在 web config 中设置 etc 2010 年北美 TechEd 的一些关键 要点 缓存是性能的关键
  • 如何在 WPF 中使所有屏幕区域变暗并使打开的窗口发光?

    在 WPF 中 如何在打开新窗口时使所有屏幕区域变暗 另外 窗口关闭后 如何恢复临时效果 这是我的版本 如果您想要变灰并模糊父窗口 private void btnOpenSettings Click object sender Route
  • 基于下拉列表显示/隐藏文本框

    例如我有一个代码
  • CUDA 内核的即时 (jit) 编译可能吗?

    CUDA 是否支持 CUDA 内核的 JIT 编译 我知道 OpenCL 提供了这个功能 我有一些变量在运行时不会更改 即仅取决于输入文件 因此我想在内核编译时 即在运行时 使用宏定义这些值 如果我在编译时手动定义这些值 我的寄存器使用量将
  • 将遗留代码库从 cvs 转移到分布式存储库(例如 git 或 Mercurial)。初始存储库设计所需的建议[关闭]

    Closed 这个问题是基于意见的 目前不接受答案 简介和背景 我们正在更改源代码控制系统 目前正在评估 git 和 Mercurial 总代码库大约有 600 万行代码 所以不算大 也不算小 首先让我简单介绍一下当前存储库设计的外观 我们
  • npm 错误! EPERM:不允许操作,scandir

    我们的部署过程使用 Jenkins 但有时我们的构建会失败 并显示以下内容 我们正在使用npm版本 6 7 0 任何帮助将不胜感激 我认为问题是另一个进程正在利用该文件夹所以它被锁定了 也许是以前的版本 我会尝试以下方法来解决您的问题 尝试
  • 如何在 HoneyComb 中获取可用屏幕高度减去导航栏?

    有没有办法测量底部导航栏的高度 以像素为单位 顺便说一句 对于像我这样偶然发现这个问题并寻找实际数字的人来说 它是 48 像素 至少在摩托罗拉 Xoom 上 这是基于此 诚然是粗略的 测试活动的调试输出 结合没有标题栏的主题 例如 andr
  • 如何用组件替换字符串(vue)

    我有包含以下内容的字符串 我用数组值替换 现在我想将它们与组件一起使用 我创建了该组件并且它可以工作 但我不知道如何在字符串中使用它 我不想手动包装它们 因为我不知道字符串将如何 它可以有几个 如果有 2 选项将有 2 个子数组 更好的方法
  • 标头中定义的 C++ 类方法是否始终内联?

    Edit 我已经恢复了原始标题 但我真正应该问的是 C 链接器如何处理已在多个对象文件中定义的类方法 假设我在标头中定义了一个 C 类 如下所示 class Klass int Obnoxiously Large Method many t
  • 增强现实框架[关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 我计划为 Android 手机开发一个增强现实应用程序 有谁知道是否有任何现有的增强现 实框架可用于此类应用程序 对于想法 您可以查看以下内容 现有应用程序及其 API Androi
  • 如何在conf.py中为sphinx设置自定义配置值? (例如,对于 sphinx.ext.ifconfig)

    经过更多测试和研究 我将原来的问题分成了两个 我在 conf py 中定义了自己的配置值 并编写了一个最小扩展名以使其在第一个文件中可见 在conf py中 sys path insert 0 os path abspath extensi
  • 如何使用 PHP Serialize() 和 Unserialize()

    我的问题非常基本 我没有找到任何例子来满足我的需求到底是什么serialize and unserialize 在php中的意思是 他们只是给出了一个例子 序列化一个数组并以无法解释的格式显示输出 通过他们的行话很难理解基本概念 EDIT
  • 用于识别主要基类的类型特征

    如果我有一个 Base 类 至少有一个虚函数 以及一个从该类单独继承的 Derived 类 那么 uintptr t derived uintptr t static cast
  • 使用 asp 页面 TagHelper 时链接不呈现

    我有一个页面在使用时不呈现 HTML 中的链接asp page标签助手 我以前见过这个 但这是由于拼写错误或页面不存在造成的 在下面的 Layout 中的两个链接中 用户渲染为http localhost ReportGroups Admi