guo*_*ngj 5 c# asp.net-core-mvc asp.net-core asp.net-core-2.0
正常创建一个默认的ASP.NET Core 2 MVC项目,然后稍微修改一下动作:
public IActionResult About()
{
ViewData["Message"] = "This is Chinese[??]";
return View();
}
Run Code Online (Sandbox Code Playgroud)
这是视图(About.cshtml):
<h3>@ViewData["Message"]</h3>
<h3>?????</h3>
Run Code Online (Sandbox Code Playgroud)
这是浏览器中的输出结果:
<h3>This is Chinese[中文]</h3>
<h3>?????</h3>
Run Code Online (Sandbox Code Playgroud)
我发现'@'符号渲染的中文文本是html unicode转义的。问题是如何停止“@”符号来转义我的文本?
根据这篇文章:
默认情况下,编码器使用仅限于基本拉丁语 Unicode 范围的安全列表,并将该范围之外的所有字符编码为它们的等效字符代码。此行为还会影响 Razor TagHelper 和 HtmlHelper 渲染,因为它将使用编码器输出您的字符串。
文章还提供了自定义默认 html 编码器的正确方法。将以下注册添加到Startup.ConfigureServices方法:
services.AddSingleton<HtmlEncoder>(
HtmlEncoder.Create(allowedRanges: new[] { UnicodeRanges.BasicLatin,
UnicodeRanges.CjkUnifiedIdeographs }));
Run Code Online (Sandbox Code Playgroud)
这是调整后的结果 html 代码:
<h3>This is Chinese[??]</h3>
<h3>?????</h3>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1848 次 |
| 最近记录: |