我有一个使用IHtmlHelper
的自定义TagBuilder
扩展程序,并返回HtmlString
。我不能再将tagBuiler.ToString()
传递给HtmlString
构造函数,因为它现在只返回typename。
我发现我可以使用tabBuiler.WriteTo(TextWriter, IHtmlEncoder)
方法但我并不确切知道如何抓住一个展开IHtmlEncoder
的对象。我在System.Text.Encodings.Web
和Microsoft.Framework.WebEncoders
中都看到了编码器。但两个名称空间中的类型似乎并不能很好地协同发挥。
答案 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()