0

タグ ヘルパーを作成しようとし<pager>ており、asp.net コア 1.0 で TagBuilder.InnerHtml.Append を使用していますが、出力で Microsoft.Extensions.Internal.BufferedHtmlContent が生成されます。

PagerTagHelper クラス メイン ul に li タグを作成し、各 li タグにタグを追加するプロセス メソッドを以下に示します。

public override void Process(TagHelperContext context, TagHelperOutput output)
{
    int totalPages, currentPage;
    var url = context.AllAttributes["link-url"];
    output.TagName = "div";
    output.PreContent.SetContent("<ul class=\"link-list\">");
    var items = new StringBuilder();

    for (var i = 1; i <= totalPages; i++)
    {
        // Creating li TagBuilder
        var li = new TagBuilder("li");

        // Creating a TagBuilder
        TagBuilder a = new TagBuilder("a");
        a.MergeAttribute("href", $"{url}?page={i}");
        a.MergeAttribute("title", $"Click to go to page {i}");
        a.InnerHtml.Append(i.ToString());

        if (i == currentPage)
        {
            a.AddCssClass("active");
        }

        li.InnerHtml.Append(a.InnerHtml.ToString());
        items.AppendLine(li.InnerHtml.ToString());
    }

    output.Content.SetContent(items.ToString());
    output.PostContent.SetContent("</ul>");
    output.Attributes.Clear();
    output.Attributes.Add("class", "pager");
}       

そして、ページャーの TagHelper 出力の結果:

<ul class="link-list">
    Microsoft.Extensions.Internal.BufferedHtmlContent
    Microsoft.Extensions.Internal.BufferedHtmlContent...     
</ul>
4

1 に答える 1