У меня есть помощник по тегам, который я создал следующим образом:
public class GooglePlusOneTagHelper : TagHelper {
[ViewContext]
public ViewContext ViewContext { get; set; }
public string Size { get; set; }
public string Annotation { get; set; }
public override void Process(TagHelperContext context, TagHelperOutput output) {
output.TagMode = TagMode.StartTagAndEndTag;
output.TagName = "div";
var request = ViewContext.HttpContext.Request;
var absoluteUri = string.Concat(
request.Scheme,
"://",
request.Host.ToUriComponent(),
request.PathBase.ToUriComponent(),
request.Path.ToUriComponent(),
request.QueryString.ToUriComponent());
output.Attributes.SetAttribute("class", "g-plusone");
string size = Size.ToLower().Trim() ?? "";
if (size == "small" || size == "medium" || size == "tall")
output.Attributes.SetAttribute("data-size", size);
string annotation = Annotation.ToLower().Trim() ?? "";
if (annotation == "none" || annotation == "inline")
output.Attributes.SetAttribute("data-annotation", annotation);
output.Attributes.SetAttribute("data-href", absoluteUri);
}
}
И когда я помещаю этот код в представление:
<google-plusone size="medium" annotation="bubble" />
Он отображается в представлении следующим образом:
<google-plusone size="medium" annotation="bubble" >
Итак, помощник тега почему-то не обрабатывает его, поскольку он действительно должен выводить DIV. Кроме того, он превращает мой необработанный тег из самозакрывающегося в открытый и никогда не закрывающийся!
<google-plusone size="medium" annotation="bubble"></google-plusone>
- person Tseng   schedule 09.06.2017<span asp-validation-for="UserName" class="text-danger" />
выиграл Сообщение проверки не отображается, но<<span asp-validation-for="UserName" class="text-danger"></span>
будет, обратите внимание на закрытие</span>
. - person Tseng   schedule 12.06.2017<div asp-something/>
по сравнению с<div asp-something></div>
. - person Tseng   schedule 12.06.2017<google-plusone></google-plusone>
, с той лишь разницей, что исходный тег будет отброшен и будет отображено только содержимое. Просто добавьте закрывающий тег и убедитесь, что вы добавили[HtmlTargetElement("google-plusone")]
, как указал Анурадж в своем ответе. Важным моментом является то, что вспомогательные теги / теги тегов, содержащие атрибуты, которые что-то делают с содержимым , не являются самозакрывающимися. В какой-то момент вы вызоветеoutput.Write(...)
в своем коде, это тот момент, когда вы пишете содержимое тегов. Но если он закрыт, вы не можете создать недопустимый html - person Tseng   schedule 12.06.2017