如何全局设置自定义 HtmlEncoder 以在所有 Razor 页面中使用?
How can I globally set a custom HtmlEncoder to use in all Razor pages?
我想将自定义 HtmlEncoder
设置为要在 Asp.net Core Razor 页面中使用的默认 HtmlEncoder
。
RazorPageBase
class 确实有一个 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 页面,包括每个部分页面,当然还有“_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);
});
我想将自定义 HtmlEncoder
设置为要在 Asp.net Core Razor 页面中使用的默认 HtmlEncoder
。
RazorPageBase
class 确实有一个 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 页面,包括每个部分页面,当然还有“_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);
});