ASP.NET Core TagHelper属性的默认值

穆罕默德·雷汉·赛义德(Muhammad Rehan Saeed)

如果我有以下标签助手:

[Flags]
public enum SubresourceIntegrityHashAlgorithm
{
    SHA256 = 1,
    SHA384 = 2,
    SHA512 = 4
}  

[HtmlTargetElement("script", Attributes = "asp-subresource-integrity")]
public class FooTagHelper : TagHelper
{
    [HtmlAttributeName("asp-subresource-integrity")]
    public SubresourceIntegrityHashAlgorithm HashAlgorithms { get; set; } 
        = SubresourceIntegrityHashAlgorithm.SHA256;

    public override void Process(TagHelperContext context, TagHelperOutput output)
    {
        // ...
    }
}

如何使用我在上面的属性中提供的默认值,以便在使用该属性时不必为该属性提供值:

<script asp-subresource-integrity src="..."></script>

代替:

<script asp-subresource-integrity="SubresourceIntegrityHashAlgorithm.SHA256" src="..."></script>

更新

我在此处的MVC GitHub页面上提出了一个问题,因为它实际上应该是内置功能。

丹尼尔·JG

当您将属性添加到的属性列表时HtmlTargetElement,该属性是应用标签助手所需的,并且需要一个值。

如果您尝试不带任何值或使用空值来使用它,则会出现类似以下错误:

<my-script asp-subresource-integrity src="foo.js"></my-script>

类型为'WebApplication7.TagHelpers.SubresourceIntegrityHashAlgorithm'的标记助手绑定属性不能为空或仅包含空格

即使将属性的类型更改为可为空的类型(如string),您也会遇到相同的错误到目前为止,我发现具有可选属性的最好方法是不要将它们包含在属性列表中:

[HtmlTargetElement("script")]

当然,这意味着无论是否有属性asp-subresource-integrity都将应用标签助手,而您很可能不希望这样做。您可以通过以下两种方法解决此问题:

  • 您可以将另一个属性用作“标记”属性,该属性除了限制存在标记属性时要应用的标记助手外,没有其他作用。

    [HtmlTargetElement("script", Attributes = "my-script")]
    public class FooScriptTagHelper : TagHelper
    {
        ...
    }
    
    <!--This uses the default value-->
    <script my-script src="foo.js"></script>
    <!--This uses a specific value-->
    <script my-script asp-subresource-integrity="..." src="foo.js"></script>
    
  • 另一种方法是使用自定义标签名称,然后在使用默认值时可以省略该属性:

    [HtmlTargetElement("my-script")]
    
    <!--This uses the default value-->
    <my-script src="foo.js"></my-script>
    <!--This uses a specific value-->
    <my-script asp-subresource-integrity="..." src="foo.js"></my-script>
    

请记住,即使采用这些方法,当您使用属性时,仍然需要提供一个值。我的意思是,您可以添加或忽略该属性,但是如果该属性存在,则它需要一个非空值:

<!--This will still throw an exception-->
<my-script asp-subresource-integrity src="foo.js"></my-script>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

ASP.NET Core TagHelper属性的默认值

来自分类Dev

ASP.NET-Core嵌套的ASP TagHelper

来自分类Dev

设置ASP.NET Core TagHelper属性而不进行编码

来自分类Dev

设置ASP.NET Core TagHelper属性而不进行编码

来自分类Dev

ASP.NET Core TagHelper输入as-for呈现值属性在请求模型中保持原始值

来自分类Dev

不能使用JavaScript在ASP.NET Core的dropdownlist中将十进制值设置为默认值

来自分类Dev

在 Telerik ASP.NET Core for Ajax 中使用网格为 Id 创建唯一默认值的问题

来自分类Dev

从Asp.Net Core移除默认的PasswordValidator

来自分类Dev

ASP.NET Core中的属性

来自分类Dev

ASP.NET Core中的属性注入

来自分类Dev

ASP.NET Core中的属性

来自分类Dev

Asp.Net WebApi。HttpPost是默认值吗?

来自分类Dev

Asp.net webapi枚举参数的默认值

来自分类Dev

asp.net的级联下拉列表中的默认值

来自分类Dev

ASP.NET Core默认调试启动URL

来自分类Dev

更改ASP.NET Core MVC中的默认cookie名称

来自分类Dev

如何在ASP.NET Core中设置默认区域?

来自分类Dev

ASP.NET Core MVC默认路由

来自分类Dev

ASP.NET Core Web应用程序(.NET Framework)TagHelper Intellisense

来自分类Dev

ASP.NET Core 3.0使用属性路由更改默认终结点路由

来自分类Dev

.NET Core反射-如何在ASP.NET Core 3剃刀视图中查找属性的引用?

来自分类Dev

ASP.NET Core 1.0中的属性路由

来自分类Dev

ASP.NET Core MetaDataType属性不起作用

来自分类Dev

在ASP.NET Core中使用NumberFormat属性

来自分类Dev

显示属性中的ASP .Net Core 3.0简称(DataAnnotations)

来自分类Dev

ASP.NET Core中的位置记录属性

来自分类Dev

ASP.NET Core中的Config.json属性替换

来自分类Dev

控制器属性ASP.NET Core

来自分类Dev

Asp.net Core MVC 授权属性不阻塞

Related 相关文章

热门标签

归档