如何全局设置自定义HtmlEncoder以在所有Razor页面中使用?



我想设置一个自定义的HtmlEncoder作为默认的HtmlEncoder在Asp.net Core Razor页面中使用。

RazorPageBase类确实有一个HtmlEncoder属性,我可以像这样在一个Razor页面上设置:

using System.Text.Encodings.Web;
using System.Text.Unicode;
@{
HtmlEncoder = HtmlEncoder.Create(UnicodeRanges.All);
}

HtmlEncoder在该页上使用。

现在要尝试的显然是将此代码应用于'ViewStart.cshtml':

using System.Text.Encodings.Web;
using System.Text.Unicode;
@{
Layout = "_Layout";
HtmlEncoder = HtmlEncoder.Create(UnicodeRanges.All);
}

然而,这不起作用,它仍然使用默认的HtmlEncoder(它编译得很好,它确实拾取布局属性)。

这意味着,要为所有页面设置默认的HtmlEncoder,我必须将上面的代码包含到每个Razor页面,包括每个Partial页面,当然还有"_Layout.cshtml"。

我希望我错过了什么。

我如何在全局范围内指定它,使其适用于所有Razor页面?

在您的应用程序配置中,请执行以下操作:

[.NET 6 Program.cs]
builder.Services.Configure<WebEncoderOptions>(options =>
{
options.TextEncoderSettings = new TextEncoderSettings(UnicodeRanges.All);
});

[Pre-.NET 6 Startup.cs]
services.Configure<WebEncoderOptions>(options =>
{
options.TextEncoderSettings = new TextEncoderSettings(UnicodeRanges.All);
});

相关内容

  • 没有找到相关文章