Asp.net core asp.net core 1.0 mvc RC2 tagBuilder方法和HtmlEncoder()在RC1中工作,而在RC2中不工作

Asp.net core asp.net core 1.0 mvc RC2 tagBuilder方法和HtmlEncoder()在RC1中工作,而在RC2中不工作,asp.net-core,asp.net-core-mvc,Asp.net Core,Asp.net Core Mvc,在RC1中,我使用了以下小方法 public string ConvertTagToSring(TagBuilder Tag) { var writer = new StringWriter(); Tag.WriteTo(writer, new HtmlEncoder()); return writer.ToString(); } 如方法所示,使用stringWriter()将Tagbuilder标记转换为字符串是非常

在RC1中,我使用了以下小方法

    public string ConvertTagToSring(TagBuilder Tag)
    {
        var writer = new StringWriter();

        Tag.WriteTo(writer, new HtmlEncoder());

        return writer.ToString();
    }
如方法所示,使用stringWriter()将Tagbuilder标记转换为字符串是非常重要的

我在“new HtmlEncoder()”上遇到一个错误,错误是:

无法创建抽象类或接口“HtmlEncoder”的实例

我在Asp.Net/Announcements的breaking changes部分找到了HtmlEncoder,但是我不知道如何将其更改为工作模式

如何重构:

Tag.WriteTo(writer, new HtmlEncoder());

因此,我可以将标记转换为字符串?

HtmlEncoder
现在是一个抽象类,无法初始化(在上)

它有一个默认实现(
DefaultHtmlEncoder
),它是内部的。但是
HtmlEncoder
公开了一个静态属性
Default
,该属性引用了它的默认实现


因此,您只需调用
HtmlEncoder.Default
,而不是调用
newhtmlencoder()
。我想这是一种优化尝试,以避免每个请求多次初始化
HtmlEncoder

使用依赖项注入获取活动(已配置)
HtmlEncoder
实例


编码器可以配置为(在
启动
)不编码某些unicode字符(西里尔字母等),而
默认Htmlencoder.Singleton

虽然我相信这是正确的答案,但我在实现它时遇到了一些困难。可以用我上面的简单方法给出一个例子吗?一、 顺便从@Phasiq那里得到了我的原始答案,尤其是@Phasiq的答案。很抱歉,当时已经很晚了,而且有一个类型<代码>HtmlEncoder。默认值是您所调用的。i、 e.
Tag.WriteTo(writer,HtmlEncoder.Default)
使用默认实现。您只能通过构造函数传递配置,
DefaultHtmlEncoder
标记为内部密封。还有哪个类实现了
HttpEncoder
抽象类?昨天我只找到了与单元测试相关的类是的,
DefaultHtmlEncoder
内部密封的
,但不是
HtmlEncoder
本身-您可以通过
Startup.cs
中的DI将默认类替换为自己的实现。此外,允许您使用自定义
textcoderSettings
创建新的
DefaultHtmlEncoder
实例