我正在编写一个简单的分页 TagHelper,我希望输出如下所示:
<ul>
<li><a href="...">Some Text</a></li>
<li><a href="...">Some Other Text</a></li>
...
</ul>
我的想法是,在定义我的类时,我会生成“a”元素,并用 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 魔法属性”会显示在输出中,但生成的链接不起作用。我必须在代码中为嵌入的“a”元素添加一个特定的 href 属性才能使链接正常工作。
如何在我自己的自定义 TagHelper 中嵌套 TagHelper,如 LinkTagHelper?