【发布时间】:2019-04-16 23:12:02
【问题描述】:
在 ASP.Net/Core MVC 中,当您在 Razor 视图中回显字符串变量时,会发生自动 HTML 转义。例如:
<div>@("<b>Hello</b>")</div>
输出为
<b>你好</b>
如何在 ASP.Net/Core MVC 中默认禁用此功能,无需在任何地方都必须使用 Html.Raw()、WriteLiteral()、new HtmlString() 等帮助程序等等?
我了解此功能背后的原因,但我正在尝试其他转义方法。
【问题讨论】:
-
它存在是有原因的,你不能关闭它。
-
如果你不想要 Razor 的功能,你可能想要not use Razor。
-
我认为您可以通过将服务集合中的服务
System.Text.Encodings.Web.HtmlEncoder替换为假服务来做到这一点。它被注入here。但它可能有一些副作用,因为它可以在 aspnet 框架的其他地方使用 -
辅助方法有什么问题?
-
@ibubi 因为如果你为来自数据库的所有数据启用 HTML 转义,它就不需要 Razor 在任何地方转义它。现在你必须记住在你回显变量的每个地方都使用辅助方法,否则 Razor 会双重转义它。
标签: asp.net asp.net-mvc asp.net-core .net-core escaping