在RC1中,我使用了以下小方法。
public string ConvertTagToSring(TagBuilder Tag)
{
var writer = new StringWriter();
Tag.WriteTo(writer, new HtmlEncoder());
return writer.ToString();
}
该方法显示它使用stringWriter()将Tagbuilder标记转换为字符串。
我在"新的HtmlEncoder()"上收到错误错误是:
无法创建抽象类或界面的实例' HtmlEncoder'
我在Asp.Net/Announcements的重大更改部分找到了HtmlEncoder上的this但是我无法弄清楚如何将其更改为有效..
我如何重构:
Tag.WriteTo(writer, new HtmlEncoder());
这样我就可以将标签转换为字符串了吗?
答案 0 :(得分:3)
HtmlEncoder
现在是一个抽象类,无法初始化(see HttpEncoder.cs上的dotnet\corefx GitHub repository)。
它有一个默认的实现(DefaultHtmlEncoder
),它是内部的。但是HtmlEncoder
公开了一个静态属性Default
,它引用了它的默认实现see HttpEncoder.cs。
因此,您只需致电new HtmlEncoder()
,而不是致电HtmlEncoder.Default
。我想这是一次优化尝试,以避免每次请求多次HtmlEncoder
初始化。
答案 1 :(得分:3)
使用依赖注入来获取活动(已配置)HtmlEncoder
实例。
可以配置编码器(在Startup
中)不对某些unicode字符(西里尔语等)进行编码,而DefaultHtmlEncoder.Singleton
encodes everything except UnicodeRanges.BasicLatin
。