Asp.NET 5中的HtmlEncode在哪里?

时间:2015-11-25 19:03:15

标签: asp.net asp.net-mvc asp.net-core asp.net-core-mvc html-encode

我有一个使用IHtmlHelper的自定义TagBuilder扩展程序,并返回HtmlString。我不能再将tagBuiler.ToString()传递给HtmlString构造函数,因为它现在只返回typename。

我发现我可以使用tabBuiler.WriteTo(TextWriter, IHtmlEncoder)方法但我并不确切知道如何抓住一个展开IHtmlEncoder的对象。我在System.Text.Encodings.WebMicrosoft.Framework.WebEncoders中都看到了编码器。但两个名称空间中的类型似乎并不能很好地协同发挥。

4 个答案:

答案 0 :(得分:14)

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

在project.json中导入依赖关系system.net.utilities

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

答案 1 :(得分:11)

HtmlEncoder中的

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

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

从我在dev分支中看到的MVC转移到直接使用System.Text.Encodings.Web.HtmlEncoder所以你将来不再需要使用Microsoft.Extensions.WebEncoders.HtmlEncoder

答案 2 :(得分:5)

至于RC1更新1,以下是它的完成方式:

using System.Text.Encodings.Web;

...

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

答案 3 :(得分:4)

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

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