0

我正在尝试制作<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>
4

1 回答 1

0
var ul = new TagBuilder("ul");
foreach (var item in links)    
{
    var li = new TagBuilder("li");
    var a = new TagBuilder("a");
    a.MergeAttribute("href", item.Attributes["href"].Value);
    a.InnerHtml.Append(item.InnerText);
    li.AddCssClass("test");
    li.InnerHtml.AppendHtml(a);
    ul.InnerHtml.AppendHtml(li);
}
output.Content.SetHtmlContent(ul);
于 2017-10-14T14:14:53.993 回答