ASP.NET Ядро TagHelper documentation приводит следующий пример:Вложение TagHelpers в ASP.NET MVC ядра 6
public class WebsiteContext
{
public Version Version { get; set; }
public int CopyrightYear { get; set; }
public bool Approved { get; set; }
public int TagsToShow { get; set; }
}
[TargetElement("website-information")]
public class WebsiteInformationTagHelper : TagHelper
{
public WebsiteContext Info { get; set; }
public override void Process(TagHelperContext context, TagHelperOutput output)
{
output.TagName = "section";
output.Content.SetContent(
[email protected]"<ul><li><strong>Version:</strong> {Info.Version}</li>
<li><strong>Copyright Year:</strong> {Info.CopyrightYear}</li>
<li><strong>Approved:</strong> {Info.Approved}</li>
<li><strong>Number of tags to show:</strong> {Info.TagsToShow}</li></ul>");
output.TagMode = TagMode.StartTagAndEndTag;
}
}
Это можно затем использовать в вашей бритве .cshtml следующим:
<website-information info="new WebsiteContext {
Version = new Version(1, 3),
CopyrightYear = 1790,
Approved = true,
TagsToShow = 131 }"/>
Это приведет к созданию следующего HTML:
<section>
<ul>
<li><strong>Version:</strong> 1.3</li>
<li><strong>Copyright Year:</strong> 1790</li>
<li><strong>Approved:</strong> true</li>
<li><strong>Number of tags to show:</strong> 131 </li>
</ul>
</section>
Это довольно уродливый синтаксис помощника тега. Есть ли способ вставить другой помощник в тег и получить полный интеллигентный смысл, так что единственный разрешенный ребенок веб-информации может быть контекстом? Смотрите пример ниже:
<website-information>
<context version="1.3" copyright="1790" approved tags-to-show="131"/>
</website-information>
В моем случае использования, сайт-информационный элемент уже имеет много атрибутов, и я хочу, чтобы добавить один или несколько отдельных вложенных элементов.
UPDATE
Я поднял this предложение на странице ASP.NET GitHub, чтобы реализовать эту функцию для TagHelpers.
Почему бы просто не добавлять отдельные параметры к помощнику тега 'website-information' вместо одного параметра' info'? Вы можете вставить агенты тегов, но вы не сможете заставить их использовать только '' помощники внутри '<веб-сайта-информации>' помощник –
@ DanielJ.G. Существует множество причин для этого. 1. У вас уже было множество атрибутов на '' '' '' '' '' '' '' '' '' '2. Если контекст сделал более логичным смысл, являясь дочерним элементом 3. Если свойства' '' context''' логически сгруппированы вместе 4. Вы могли бы имеют несколько '' 'контекстных''' элементов. –