Die ASP.NET-Core-TagHelper documentation das folgende Beispiel gibt:Nesting TagHelpers in ASP.NET MVC-Core 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;
}
}
Dies kann dann in Ihrem Rasierer verwendet werden .cshtml wie folgt:
<website-information info="new WebsiteContext {
Version = new Version(1, 3),
CopyrightYear = 1790,
Approved = true,
TagsToShow = 131 }"/>
Dies erzeugt den folgenden HTML-Code:
<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>
Dies ist ziemlich hässlich Tag Helfersyntax. Gibt es eine Möglichkeit zu nisten andere Tag Helfer und erhalten volle Intelli-Sense, so dass die einzige erlaubte Kind von Website-Informationen Kontext sein kann? Siehe Beispiel unten:
<website-information>
<context version="1.3" copyright="1790" approved tags-to-show="131"/>
</website-information>
In meinem Anwendungsfall, das Website-Informationselement hat bereits viele Attribute und ich mag ein oder mehr separate verschachtelte Elemente hinzuzufügen.
UPDATE
ich this Vorschlag auf der ASP.NET GitHub Seite angehoben haben diese Funktion für TagHelpers zu implementieren.
Warum nicht einfach getrennt Parameter an die 'Website-Informationen verstößt Tag Helfer anstelle eines einzigen' info' Parameter hinzufügen? Sie könnten Nest Tag Helfer, aber Sie nicht in der Lage sein zu erzwingen, dass nur '' Helfer innerhalb der '' Helfer –
@ DanielJ.G.There gibt viele Gründe, verschachtelt sind, dies zu tun. 1. Sie hatten schon viele Attribute auf '' 'Website-information''' 2. Wenn Kontext logischen Sinn 3. ein untergeordnetes Element wird, wenn die' '' context''' Eigenschaften logisch gruppiert werden 4. Sie könnten haben mehrere '' 'Kontext''' Elemente. –