我想触发股票ScriptTagHelper
(在 GitHub 上查看源代码 https://github.com/aspnet/Mvc/blob/dev/src/Microsoft.AspNetCore.Mvc.TagHelpers/ScriptTagHelper.cs),这样它就会模拟asp-append-version="true"
属性。
我知道使用它的正确方法是对此进行更改:
<script src="somefile.js"></script>
to this:
<script src="somefile.js" asp-append-version="true"></script>
此过程与版本控制 CSS 包含和图像非常相似(LinkTagHelper
and ImageTagHelper
).
由于我有很多包含的脚本、样式表和图像,所以我想稍微自动化一些。所以而不是添加asp-append-version="true"
在每个 HTML 元素上,我宁愿创建一个自定义 TagHelper 来为我完成此操作。
问题就在这里——它不起作用。
目前,我的 TagHelper 仅涵盖script
标签,看起来像这样:
[HtmlTargetElement("script", Attributes = "src")]
public class TestTagHelper : TagHelper
{
public override int Order => int.MinValue;
public override void Process(TagHelperContext context, TagHelperOutput output)
{
if(!context.AllAttributes.ContainsName("asp-append-version"))
{
output.Attributes.SetAttribute("asp-append-version", "true");
}
}
}
但不是触发默认ScriptTagHelper
,它实际上输出asp-append-version="true"
到输出 HTML。我也设置了Order
属性设置为 INT_MIN,以便它在任何其他标记帮助程序之前触发,但它仍然不起作用。
有办法让这项工作发挥作用吗?