Asp.NET 5 中的 HtmlEncode 在哪里

Where is HtmlEncode in Asp.NET 5

我有一个使用 TagBuilder 和 returns 和 HtmlString 的自定义 IHtmlHelper 扩展方法。我不能再将 tagBuiler.ToString() 传递给 HtmlString 构造函数,因为现在只是 returns 类型名。

我知道我可以使用 tabBuiler.WriteTo(TextWriter, IHtmlEncoder) 方法,但我不知道如何得到实现 IHtmlEncoder 的对象。我在 System.Text.Encodings.WebMicrosoft.Framework.WebEncoders 中都看到了编码器。但是这两个命名空间中的类型似乎不能很好地协同工作。

Microsoft.Extensions.WebEncoders.Core 中的

HtmlEncoder 只是 System.Text.Encodings.Web.HtmlEncoder 的包装器,用于实现 IHtmlEncoder 接口 (https://github.com/aspnet/HttpAbstractions/blob/release/src/Microsoft.Extensions.WebEncoders.Core/HtmlEncoder.cs).

您可以采用 Microsoft.Extensions.WebEncoders.HtmlEncoder.Default 并传递给 WriteTo 方法。

从我在开发分支 MVC 中看到的情况来看,直接使用 System.Text.Encodings.Web.HtmlEncoder 因此您以后不需要再使用 Microsoft.Extensions.WebEncoders.HtmlEncoder

关于 RC1 更新 1,它是这样完成的:

using System.Text.Encodings.Web;

...

HtmlEncoder.Default.Encode("...");

在 ASP.NET Core RC2 中,您可以在 System.Net.WebUtility 中找到 HtmlDecode:

在您的 project.json 导入依赖项中 system.net.utilities

"dependencies": {
    "System.Text.Encodings.Web": "4.0.0-rc2-24027"
}

只需使用 System.Net.WebUtility.HtmlEncode 或解码为:

System.Net.WebUtility.HtmlEncode() System.Net.WebUtility.HtmlDecode()