Search code examples
c#.net-coreasp.net-core-mvctagbuilder

Net Core: How to Convert TagBuilder to String in C#?


Is there a native way to convert Tagbuilder to String in Net Core? This only is for ASP Net 5. Convert IHtmlContent/TagBuilder to string in C#

Convert value of TagBuilder into a String

I think Microsoft had a replacement function for this in Net Core

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

Solution

  • The same WriteTo method is available in aspnetcore.

    You should be able to continue to benefit from creating the same GetString method, as TagBuilder inherits from IHtmlContent.

    For example:

    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();
            }
        }
    }
    

    Then from your code, you can just call

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