我正在尝试制作<pager>
标签助手并在 asp.net core 1.0 中使用 TagBuilder.InnerHtml.Append,但输出会生成 Microsoft.Extensions.Internal.BufferedHtmlContent。
PagerTagHelper 类 Process 方法如下所示,在主 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>