gpt4 book ai didi

asp.net-mvc - 标签助手中的可选属性

转载 作者:行者123 更新时间:2023-12-01 11:28:57 26 4
gpt4 key购买 nike

我有一个标签助手,如下所示:

[HtmlTargetElement("foo", Attributes = "bar")]
public class FooTagHelper : TagHelper

[HtmlAttributeName("bar")]
public bool Bar { get; set; }

当我将以下内容添加到 View 时,标签助手会按预期处理目标:

<foo bar="true"></foo>

但是,我想做的是 bar可选的,例如<foo></foo>如果它被忽略了,我希望它默认为 false

这可能吗?此源代码注释为 HtmlTargetElementAttribute.Attributes属性似乎表明不是:

// Summary:
A comma-separated System.String of attribute names the HTML element must contain
for the Microsoft.AspNet.Razor.TagHelpers.ITagHelper to run. * at the end of an attribute name acts as a prefix match.

最佳答案

您可以将“bar”从必需属性中删除。

您可以通过重写 Process 方法并检查属性是否存在来做到这一点。如果没有,请使用其名称和值添加 Bar 属性。您可以将值显式设置为 false 但无论如何属性 Bar 默认为 false。

[HtmlTargetElement("foo")]
public class FooTagHelper : TagHelper
{
[HtmlAttributeName("bar")]
public bool Bar { get; set; }

public override void Process(TagHelperContext context, TagHelperOutput output)
{
if (!output.Attributes.ContainsName(nameof(Bar)))
{
output.Attributes.Add(nameof(Bar), Bar);
}
}
}

干杯!

如果您还没有这样做,我建议您查看此处提供的文档 https://docs.asp.net/projects/mvc/en/latest/views/tag-helpers/index.html .

关于asp.net-mvc - 标签助手中的可选属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34843760/

26 4 0