Я смущен с поведением TagHelper
, интродуцированным в ASP.NET Core MVC. После этого урока A working email Tag Helper у нас появилась возможность писать самозакрывающиеся теги. Согласно статье для этой цели, мы должны использовать attbute HtmlTargetElement
. Класс ниже продемонстрировало, как пример:Self-closed TagHelper объединяет html-разметку элемента sibling
[HtmlTargetElement("email", TagStructure = TagStructure.WithoutEndTag)]
public class EmailTagHelper : TagHelper
{
private const string EmailDomain = "contoso.com";
public string MailTo { get; set; }
public override void Process(TagHelperContext context, TagHelperOutput output)
{
output.TagName = "a";
var address = MailTo + "@" + EmailDomain;
output.Attributes.SetAttribute("href", "mailto:" + address);
output.Content.SetContent(address);
}
}
Разметка с точки зрения бритвы, как:
<strong>Support:</strong>
<email mail-to="Support"/><br />
<strong>Marketing:</strong>
<email mail-to="Marketing"/>
Но у меня есть неожиданный выход:
<strong>Support:</strong>
<a href="mailto:[email protected]">
<span>Another content</span>
<strong>Marketing:</strong>
</a>
<a href="mailto:[email protected]"></a>
Почему первый якорь тег содержит <span>
и <strong>
содержание тегов?
Без атрибута HtmlTargetElement
и с закрывающими тегами </email>
в режиме бритвы У меня правильное поведение.