我实现了一个自定义标签帮助程序,以生成页码作为链接。将触发“ Process”方法,并且字符串生成器中包含所有HTML内容,但不会在屏幕上输出结果。它只是渲染,有人可以帮忙吗?
<paginate page="Model.PageInfo" />
[HtmlTargetElement("paginate",
TagStructure = TagStructure.WithoutEndTag)]
public class PaginateTagHelper : TagHelper
{
public PageInfo Page { get; set; }
public override void Process(TagHelperContext context, TagHelperOutput output)
{
StringBuilder html = new StringBuilder();
html.Append("<div>");
for (int i = 1; i <= Page.TotalPages; i++)
{
var tag = new Microsoft.AspNetCore.Mvc.Rendering.TagBuilder("a");
tag.MergeAttribute("href", Page.PageUrl(i));
tag.InnerHtml.AppendHtml(i.ToString());
if (i == Page.CurrentPage)
{
tag.AddCssClass("selected");
tag.AddCssClass("btn-primary");
}
tag.AddCssClass("btn btn-default");
html.Append(GetTagContent(tag));
}
html.Append("</div>");
output.Content.SetHtmlContent(html.ToString());
}
private string GetTagContent(IHtmlContent content)
{
using (var writer = new System.IO.StringWriter())
{
content.WriteTo(writer, System.Text.Encodings.Web.HtmlEncoder.Default);
return writer.ToString();
}
}
}
答案 0 :(得分:2)
删除TagStructure = TagStructure.WithoutEndTag
,自闭标签不适用于具有内部内容的标签。
Self-closing TagHelpers
许多标签助手不能用作自动关闭标签。一些标签助手被设计为自动关闭标签。使用并非设计为自动关闭的Tag Helper会抑制呈现的输出。自闭合标签助手会在呈现的输出中产生自闭合标签。