Mis*_*pic 2 asp.net-mvc razor asp.net-core-mvc tag-helpers
我有一个标签助手,沿着以下几行:
[HtmlTargetElement("foo", Attributes = "bar")]
public class FooTagHelper : TagHelper
[HtmlAttributeName("bar")]
public bool Bar { get; set; }
Run Code Online (Sandbox Code Playgroud)
当我将以下内容添加到视图时,标记帮助程序按预期处理目标:
<foo bar="true"></foo>
Run Code Online (Sandbox Code Playgroud)
但是,我想做的是制作bar可选的,例如,<foo></foo>如果它已被取消,我希望它默认为false
这可能吗?该HtmlTargetElementAttribute.Attributes属性的源代码注释似乎表明不是:
//摘要:
一个逗号分隔的System.String属性名称,HTML元素必须包含
这些属性名称才能运行Microsoft.AspNet.Razor.TagHelpers.ITagHelper.*属性名称末尾的*用作前缀匹配.
您可以删除"bar"作为必需属性.
您可以通过重写Process方法并检查属性是否存在来实现.如果没有,请使用其名称和值添加Bar属性.您可以显式设置值,false但默认情况下属性栏为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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
干杯!
如果您尚未这样做,我建议您查看此处提供的文档https://docs.asp.net/projects/mvc/en/latest/views/tag-helpers/index.html.
| 归档时间: |
|
| 查看次数: |
2345 次 |
| 最近记录: |