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;