Ich bin ein einfaches Paginierung TagHelper schreiben, wo ich die Ausgabe wie folgt aussehen wollen:TagHelper
<ul>
<li><a href="...">Some Text</a></li>
<li><a href="...">Some Other Text</a></li>
...
</ul>
hatte ich die Idee, dass meine Klasse bei der Definition I erzeugen würde „a“ Elemente, und schmücken sie mit Asp-Controller, Asp-Aktion usw., Attribute, die als die richtige Href-Link gerendert werden würde. Hier ist der Code, den ich mir ausgedacht habe:
protected TagBuilder CreatePageLink(int page, bool enabled, string inner)
{
TagBuilder a = new TagBuilder("a");
a.MergeAttribute("asp-controller", AspController);
a.MergeAttribute("asp-action", AspAction);
a.MergeAttribute("asp-route-page", page.ToString());
a.MergeAttribute("asp-route-itemsPerPage", ItemsPerPage.ToString());
a.MergeAttribute("title", $"goto page {page}");
if(!enabled) a.AddCssClass("disabled");
if((page == Page) && String.IsNullOrEmpty(inner)) a.AddCssClass("active");
if(String.IsNullOrEmpty(inner)) inner = page.ToString();
a.InnerHtml.AppendHtml(inner);
TagBuilder li = new TagBuilder("li");
li.InnerHtml.Append(a);
return li;
}
Aber es funktioniert nicht. Die "MVC magic attributes" wie asp-controller erscheinen in der Ausgabe, aber die resultierenden Links funktionieren nicht. Ich muss dem eingebetteten "a" -Element im Code ein spezifisches href-Attribut hinzufügen, damit die Verbindung funktioniert.
Wie gehe ich bei der Verschachtelung von TagHelpern, wie dem LinkTagHelper, in meinem eigenen benutzerdefinierten TagHelper vor?
Ich bin nicht sicher, können Sie „Nest“ Tag-Helfer wie das wirklich, aber man konnte die Klasse von 'AnchorTagHelper' ableiten und integrieren Sie die generierte Ausgabe der Basis –