タグ ヘルパーを作成しようとし<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>