出力を次のようにする単純なページネーション 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 属性をコードで追加する必要があります。
LinkTagHelper のような TagHelper を独自のカスタム TagHelper 内にネストするにはどうすればよいですか?