我如何让我的 ASP.NET 核心标签助手自动关闭
How do I allow my ASP.NET Core tag helpers to be self-closing
我写了一个标签助手,我可以按如下方式使用...
<mytaghelper attr1="jim"></mytaghelper>
我希望能够将其缩短为...
<mytaghelper attr1="jim">
...或至少...
<mytaghelper attr1="jim"/>
但是,我无法让它工作。这是 Process 方法的一些示例代码...
public override void Process(TagHelperContext context, TagHelperOutput output) {
output.TagName = "div";
output.PreContent.SetHtmlContent("<div>");
output.Content.SetHtmlContent("OUTPUT HTML GOES HERE");
output.PostContent.SetHtmlContent("</div>");
output.Attributes.Clear();
}
我尝试在 class...
上的 HtmlTargetElement
属性中添加 TagStructure
设置
[HtmlTargetElement("mytaghelper", TagStructure = TagStructure.WithoutEndTag)]
...不过好像没什么区别。 <mytaghelper attr1="jim"/>
生成 <div />
,<mytaghelper attr1="jim"></mytaghelper>
生成 <div></mytaghelper>
。
如果我将 TagStructure
设置为 NormalOrSelfClosing
,则包含一个结束标记有效,但 <mytaghelper attr1="jim"/>
给出一个空的 <div />
谁能解释我需要做什么?
正确的语法是:
[HtmlTargetElement("mytaghelper", TagStructure = TagStructure.WithoutEndTag)]
它应该应用于 taghelper class,而不是 Process
方法。您可能已经在这样做了,但是您的问题中并不清楚。不过,我相信您仍然必须使用 self-closing 标记语法 (/>
) 才能正常工作。
TagStructure.WithoutEndTag
能够仅使用开始标记或 self-closing 来编写标记,但输出将是 <div >
或 <div/>
。 Self-closing 锚标签无效 HTML,因此您不想创建一个,但您可能想要创建一个 self-closing 的标签助手。标签助手在读取标签后设置 TagMode 属性 的类型。在 process 方法中添加以下代码行:
output.TagMode = TagMode.StartTagAndEndTag;
花点时间阅读 Author Tag Helpers in ASP.NET Core,其中完美地涵盖了这一点。
我写了一个标签助手,我可以按如下方式使用...
<mytaghelper attr1="jim"></mytaghelper>
我希望能够将其缩短为...
<mytaghelper attr1="jim">
...或至少...
<mytaghelper attr1="jim"/>
但是,我无法让它工作。这是 Process 方法的一些示例代码...
public override void Process(TagHelperContext context, TagHelperOutput output) {
output.TagName = "div";
output.PreContent.SetHtmlContent("<div>");
output.Content.SetHtmlContent("OUTPUT HTML GOES HERE");
output.PostContent.SetHtmlContent("</div>");
output.Attributes.Clear();
}
我尝试在 class...
上的HtmlTargetElement
属性中添加 TagStructure
设置
[HtmlTargetElement("mytaghelper", TagStructure = TagStructure.WithoutEndTag)]
...不过好像没什么区别。 <mytaghelper attr1="jim"/>
生成 <div />
,<mytaghelper attr1="jim"></mytaghelper>
生成 <div></mytaghelper>
。
如果我将 TagStructure
设置为 NormalOrSelfClosing
,则包含一个结束标记有效,但 <mytaghelper attr1="jim"/>
给出一个空的 <div />
谁能解释我需要做什么?
正确的语法是:
[HtmlTargetElement("mytaghelper", TagStructure = TagStructure.WithoutEndTag)]
它应该应用于 taghelper class,而不是 Process
方法。您可能已经在这样做了,但是您的问题中并不清楚。不过,我相信您仍然必须使用 self-closing 标记语法 (/>
) 才能正常工作。
TagStructure.WithoutEndTag
能够仅使用开始标记或 self-closing 来编写标记,但输出将是 <div >
或 <div/>
。 Self-closing 锚标签无效 HTML,因此您不想创建一个,但您可能想要创建一个 self-closing 的标签助手。标签助手在读取标签后设置 TagMode 属性 的类型。在 process 方法中添加以下代码行:
output.TagMode = TagMode.StartTagAndEndTag;
花点时间阅读 Author Tag Helpers in ASP.NET Core,其中完美地涵盖了这一点。