我正在写一个简单的分页TagHelper,在这里我所要的输出是这样的:在自定义使用TagHelper TagHelper
<ul>
<li><a href="...">Some Text</a></li>
<li><a href="...">Some Other Text</a></li>
...
</ul>
我有想法,在我的定义I类会产生“一”元素,并用asp-controller,asp-action等来修饰它们,这些属性会被渲染为正确的href链接。这是我想出的代码:
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;
}
但它不起作用。输出中显示了像asp-controller这样的“MVC魔术属性”,但生成的链接不起作用。我必须在代码中添加一个特定的href属性给嵌入的“a”元素以使链接工作。
如何在我自己的自定义TagHelper中嵌套TagHelpers,如LinkTagHelper?
我不知道你能真正“鸟巢”的标签助手这样的,但你可以从'AnchorTagHelper'派生类并整合基地的生成输出 –