Asp.net core 如何允许我的ASP.NET核心标记帮助程序自动关闭

Asp.net core 如何允许我的ASP.NET核心标记帮助程序自动关闭,asp.net-core,tag-helpers,asp.net-core-tag-helpers,Asp.net Core,Tag Helpers,Asp.net Core Tag Helpers,我已经写了一个标签助手,我可以使用如下 <mytaghelper attr1="jim"></mytaghelper> ……但这似乎没有什么区别生成,而生成 如果我将TagStructure设置为NormalOrSelfClosing,则包含的结束标记有效,但给出的是空的 有人能解释我需要做什么吗?正确的语法是: [HtmlTargetElement("mytaghelper", TagStructure = TagStructure.WithoutEndTag)]

我已经写了一个标签助手,我可以使用如下

<mytaghelper attr1="jim"></mytaghelper>
……但这似乎没有什么区别<代码>生成
,而
生成

如果我将
TagStructure
设置为
NormalOrSelfClosing
,则包含的结束标记有效,但
给出的是空的

有人能解释我需要做什么吗?

正确的语法是:

[HtmlTargetElement("mytaghelper", TagStructure = TagStructure.WithoutEndTag)]

应将其应用于taghelper类,而不是
过程
方法。你可能已经在这么做了,但你的问题中还不清楚。不过,我相信您仍然必须使用自动关闭标记语法(
/>
)才能正常工作。

标记结构。WithoutEndTag
只能使用开始标记或自动关闭来编写标记,但输出将是
。自动关闭锚点标记不是有效的HTML,因此您不想创建一个,但您可能希望创建一个自动关闭的标记帮助器。标记帮助程序在读取标记后设置属性的类型。在流程方法中添加以下代码行:

output.TagMode = TagMode.StartTagAndEndTag;

请花点时间阅读其中完美地涵盖了这一点。

对不起,我不够清楚。我确实向类中添加了属性,并尝试了您显示的选项,但没有成功。请看我更新的问题,在那里我(希望)澄清了它,并展示了这两种标签的效果。谢谢,我不知道你说的锚定标签是什么意思,因为我从来没有提到过它们。但是,
TagMode.starttagendtag
做了我需要的事情。谢谢你的链接,它非常有用。
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();
}
[HtmlTargetElement("mytaghelper", TagStructure = TagStructure.WithoutEndTag)]
[HtmlTargetElement("mytaghelper", TagStructure = TagStructure.WithoutEndTag)]
output.TagMode = TagMode.StartTagAndEndTag;