programu ASP.NET Rdzeń TagHelper documentation podaje następujący przykład:zagnieżdżanie TagHelpers w ASP.NET MVC rdzenia 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;
}
}
ten może być następnie wykorzystane w Razor .cshtml następująco:
<website-information info="new WebsiteContext {
Version = new Version(1, 3),
CopyrightYear = 1790,
Approved = true,
TagsToShow = 131 }"/>
Spowoduje to wygenerowanie następującego kodu 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>
To jest dość brzydka składnia znacznika pomocnika. Czy jest jakiś sposób na zagnieżdżenie innego pomocnika znacznika i uzyskanie pełnego intelli-sense, tak aby jedynym dozwolonym dzieckiem informacji na stronie był kontekst? Zobacz poniższy przykład:
<website-information>
<context version="1.3" copyright="1790" approved tags-to-show="131"/>
</website-information>
w moim przypadku użycia, element strona informacyjna ma już wiele atrybutów i chcę dodać jeden lub więcejoddzielne elementy zagnieżdżone.
UPDATE
mam podniesione this sugestię na stronie ASP.NET GitHub do wdrożenia tej funkcji dla TagHelpers.
Dlaczego po prostu nie dodawać oddzielnych parametrów do helpera tagu "informacja o stronie internetowej" zamiast pojedynczego parametru "info"? Możesz zagnieździć pomocników tagów, ale nie będziesz mógł wymusić, że 'pomocnicy są zagnieżdżeni wewnątrz' 'helper –
@ DanielJ.G. Istnieje wiele powodów, aby to zrobić. 1. Masz już wiele atrybutów na '' 'informacji o stronie''' 2. Jeśli kontekst jest bardziej logiczny, jako element potomny 3. Jeśli właściwości' '' context''' są logicznie pogrupowane razem. 4. Możesz mają wiele elementów '' 'context'''. –