【问题标题】:Net Core: How to Convert TagBuilder to String in C#?Net Core:如何在 C# 中将 TagBuilder 转换为字符串?
【发布时间】:2019-07-14 09:08:36
【问题描述】:

在 Net Core 中是否有将 Tagbuilder 转换为 String 的本地方法?这仅适用于 ASP Net 5。Convert IHtmlContent/TagBuilder to string in C#

将 TagBuilder 的值转换为字符串

我认为微软在 Net Core 中有一个替代功能

public static string GetString(IHtmlContent content)
{
    using (var writer = new System.IO.StringWriter())
    {        
        content.WriteTo(writer, HtmlEncoder.Default);
        return writer.ToString();
    } 
}     

【问题讨论】:

    标签: c# .net-core asp.net-core-mvc tagbuilder


    【解决方案1】:

    这个解决方案对我有用!

            StringBuilder result = new StringBuilder();
            for (int i = 1; i <= pagingInfo.TotalPages; i++)
            {
                TagBuilder tag = new TagBuilder("a");
                result.Append(GetString(tag));
            }
    
            return new HtmlString(result.ToString());
    

    【讨论】:

      【解决方案2】:

      aspnetcore 中提供了相同的 WriteTo 方法。

      您应该能够继续从创建相同的 GetString 方法中受益,因为 TagBuilder 继承自 IHtmlContent

      例如:

      public static class IHtmlContentExtensions
      {
          public static string GetString(this Microsoft.AspNetCore.Html.IHtmlContent content)
          {
              using (var writer = new System.IO.StringWriter())
              {        
                  content.WriteTo(writer, System.Text.Encodings.Web.HtmlEncoder.Default);
                  return writer.ToString();
              }
          }
      }
      

      然后从您的代码中,您可以调用

      TagBuilder myTag = // ...
      string tagAsText = myTag.GetString();
      

      【讨论】:

      • 我问有没有别的方法,上面已经列出来了,C#有Native函数吗?
      • 好答案,但我不得不跳到这里,不要调用类 IHtmlContentExtensions,'I' 前缀通常是为接口保留的。
      • 这是一个公平的观点。我命名它是因为它扩展了一个名为 IHtmlContent 的接口,但你说得对,通常为接口保留 I 前缀
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-15
      • 2016-01-14
      • 1970-01-01
      • 2010-11-22
      • 2011-09-06
      • 2020-07-13
      相关资源
      最近更新 更多