在不编码的情况下设置 ASP.NET Core TagHelper 属性

2023-12-11

我想添加integrity属性到我的标签助手中的脚本标签。它包含一个+我不想编码的标志。

<script integrity="sha384-Li9vy3DqF8tnTXuiaAJuML3ky+er10rcgNR/VqsVpcw+ThHmYcwiB1pbOxEbzJr7"></script>

这是我的标签助手:

[HtmlTargetElement(Attributes = "script")]
public class MyTagHelper : TagHelper
{
    public override async Task ProcessAsync(TagHelperContext context, TagHelperOutput output)
    {
        // Omitted...

        output.Attributes["integrity"] = "sha384-Li9vy3DqF8tnTXuiaAJuML3ky+er10rcgNR/VqsVpcw+ThHmYcwiB1pbOxEbzJr7";
    }
}

这是上面代码的输出,其中+已被替换为&#x2B;:

<script integrity="sha384-Li9vy3DqF8tnTXuiaAJuML3ky&#x2B;er10rcgNR/VqsVpcw&#x2B;ThHmYcwiB1pbOxEbzJr7"></script>

我怎样才能阻止这种编码的发生?


提供的代码对我不起作用,因为ProcessAsync方法没有被调用。这有一些问题(抽象类无法实例化,没有script属性等)。

解决方案基本上是您创建TagHelperAttribute自己分类,而不是简单地分配string type.

@section Scripts {
    <script></script>
}

标签助手

[HtmlTargetElement("script")]
public class MyTagHelper : TagHelper
{
    public const string IntegrityAttributeName = "integrity";
    public override async Task ProcessAsync(TagHelperContext context, TagHelperOutput output)
    {
        // Omitted...

        output.Attributes[IntegrityAttributeName] = new TagHelperAttribute(IntegrityAttributeName, new HtmlString("sha384-Li9vy3DqF8tnTXuiaAJuML3ky+er10rcgNR/VqsVpcw+ThHmYcwiB1pbOxEbzJr7"));

        await Task.FromResult(true);
    }
}

这正确输出

<script integrity="sha384-Li9vy3DqF8tnTXuiaAJuML3ky+er10rcgNR/VqsVpcw+ThHmYcwiB1pbOxEbzJr7"></script>

这样做的原因是,TagHelperAttribute存在运算符重载public static implicit operator TagHelperAttribute(string value)对于隐式(=) 运算符,这将创建TagHelperAttribute并按原样传递字符串Value.

在《剃刀》中,strings会自动逃脱。如果你想避免转义,你必须使用HtmlString反而。

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

在不编码的情况下设置 ASP.NET Core TagHelper 属性 的相关文章

随机推荐

  • 如何使用 R 从 SQL 数据库中检索很长的 XML 字符串?

    我有一个从 SQL 数据库获取 XML 文件的脚本 我是这样做的 library RODBC library XML myconn lt odbcConnect mydsn query text lt SELECT xmlfield FRO
  • "rep; nop;" 是什么意思?在 x86 汇编中意味着什么?它与“暂停”指令相同吗?

    什么是rep nop mean 是不是一样pause操作说明 是不是一样rep nop 没有分号 和简单的有什么区别nop操作说明 它在 AMD 和 Intel 处理器上的表现是否不同 奖励 这些说明的官方文档在哪里 这个问题的动机 经过评
  • 事件处理后如何更新页面数据?

    在 Page Init 上 我根据几个数据库表创建了一个动态创建的控件表 其中一个控件是 ImageButton 用于在列表中向上移动列表项 此事件处理程序的作用是更新数据库中受影响项目的 SortOrder 列 现在的问题是 由于控件是在
  • AVCaptureDeviceType.builtInDualCamera 的作用是什么

    我正在玩 swift 和 iPhone 7 Plus 我正在使用builtInWideAngleCamera 和builtInTelephotoCamera 即使我无法同时获取两张图像 这也很棒 我在苹果文档中看到 AVCaptureDev
  • 测量和基准测试浏览器中 JavaScript 引擎的处理能力

    衡量 v8 或 Spidermonkey 等 JavaScript 引擎性能的准确方法是什么 它至少应该与一个评估和另一个评估没有太大的偏差 可能允许在不同操作系统和不同硬件配置上的不同 JavaScript 引擎之间进行排名 我的第一次尝
  • 如何在android中将视频文件(.mp4)格式转换为二进制格式?

    我想在网络服务器上上传视频 我得到了一个服务 我想以二进制格式传递一个文件 我该怎么做 我尝试在 base64 的帮助下将视频文件转换为二进制格式 public class binaryformat extends Activity pri
  • 管理 cron 作业创建的日志文件

    我有一个 cron 作业 每天将其日志文件复制到我的主文件夹中 每天它都会覆盖目标文件夹中的现有文件 这是预期的 我想保留以前日期的日志 以便下次将文件复制到目标文件夹时 它会保留以前日期的文件 我怎么做 管理 cron 日志的最佳方法是为
  • Selenium Actions 还是 Java AWT Robot?

    到目前为止 我一直使用 Selenium Actions 库来在我们的自动化项目中执行鼠标 键盘操作 最近 我发现了 Java AWT Robot 类 它与 Selenium Actions 库相比如何 其中一个是否存在另一个可以解决的极端
  • JQuery Datepicker 获取所选日期

    我目前正在使用 2 个独立的 JQuery 日期选择器 我已经修改了它们的格式 以便能够传递到存储在后端 MySQL 数据库中 我的日期选择器在这里被调用
  • 取消令牌源示例

    我正在执行一些异步操作 并且如果用户请求此操作 我想使用 CancellationToken 来停止异步任务的运行 为了做到这一点 拥有一个字典是一个很好的做法 我可以用它找到正确的线程以停止正确的操作 我目前正在查看的是以下内容 publ
  • bearingTo(Location dest) 到底计算什么?

    什么是bearingTo Location dest 具体计算一下 谁能解释一下吗 提前致谢 protected void onCreate Bundle savedInstanceState DestinationLoc setLatit
  • Liquibase 锁 - 原因?

    当我在 Oracle 服务器上运行大量 liquibase 脚本时 我得到了这个信息 某个计算机就是我 Waiting for changelog lock Waiting for changelog lock Waiting for ch
  • 有没有办法实例化匿名内部类中定义的类?

    我随机编写代码并遇到一个问题 如何实例化在匿名内部类中定义的类 E 如下所示 喜欢 A c new A class E Statements 您无法编写使用普通调用的程序new为此 为了实例化一个类 它必须有一个name 正如该术语所暗示的
  • 调整 PDF 输出中的 R Markdown 标题位置

    我正在创建 R Markdown 报告 但找不到将标题移至页面下方的方法 这是一个最小的例子 我想将标题向下移动 5 厘米 title This is my title to display at 5cm below the top out
  • 角度日期管道在文本框中无法正常工作

    我的日期管道无法在 Angular 中工作 我只想显示为这种格式 MM dd yyyy 如何解决 打字稿 this testDate new Date this singleUser createDate console log this
  • AttributeError:“int”对象没有属性“_sa_instance_state”

    我正在使用 Flask 制作论坛模板 当我尝试使用表单在浏览器中创建新线程时 SQLAlchemy 抛出 AttributeError 当我尝试实现与论坛到线程的一对多关系和与线程到用户的一对多关系时 问题出现了 模型 py class U
  • 以编程方式创建 UITableViewController

    这就是我尝试过的 屏幕上没有显示任何内容 并且您应该实现的 UITableView 方法也没有被调用 void loadView UIView view UIView alloc initWithFrame UIScreen mainScr
  • PriorityQueue 是否允许对队列中已有的元素进行重新排序?

    我想增加或降低项目的优先级PriorityQueue 例如 我可能正在下载一长串图像 突然想要第三十个图像具有最高优先级 据我了解 poll 始终返回具有最低值的队列对象 由比较器确定 如果我可以降低队列中已有项目的值 例如 如果该值由in
  • 没有 mod_rewrite 的 php Zend / MVC

    我在网上的许多博客中都看到过它 但我相信应该在这里讨论它 当我们有 PHP 中的 MVC 框架 我对 ZEND 感兴趣 但我们的主机不提供 mod rewrite 时我们该怎么办 有什么 捷径 吗 我们可以以任何方式转移控制权 以便在页面之
  • 在不编码的情况下设置 ASP.NET Core TagHelper 属性

    我想添加integrity属性到我的标签助手中的脚本标签 它包含一个 我不想编码的标志 这是我的标签助手 HtmlTargetElement Attributes script public class MyTagHelper TagHel