Keith Hill Keith Hill - 15 days ago 6
ASP.NET (C#) Question

Where is HtmlEncode in Asp.NET 5

I have a custom

IHtmlHelper
extension method that uses
TagBuilder
and returns an
HtmlString
. I can no longer pass
tagBuiler.ToString()
to the
HtmlString
constructor as that just returns the typename now.

I see I can use the
tabBuiler.WriteTo(TextWriter, IHtmlEncoder)
method but I don't know exactly how to get my hands on an object that implments
IHtmlEncoder
. I see encoders in both
System.Text.Encodings.Web
and
Microsoft.Framework.WebEncoders
. But the types in the two namespace don't seem to play well together.

Answer

HtmlEncoder in Microsoft.Extensions.WebEncoders.Core is just a wrapper around System.Text.Encodings.Web.HtmlEncoder to implement IHtmlEncoder interface (https://github.com/aspnet/HttpAbstractions/blob/release/src/Microsoft.Extensions.WebEncoders.Core/HtmlEncoder.cs).

You can take Microsoft.Extensions.WebEncoders.HtmlEncoder.Default and pass to WriteTo method.

From what I see in dev branch MVC moved to using System.Text.Encodings.Web.HtmlEncoder directly so you wan't need to use Microsoft.Extensions.WebEncoders.HtmlEncoder anymore in future.