我有一个包含HTML的文本区域。我希望在发布到控制器方法时将内容转义但我发现它已转义两次。有什么可能导致这种情况?请参阅以下示例:
从请求中拉出:
<b>test</b>
WebUtility.HtmlDecode第一次:
<b>test</b>
WebUtility.HtmlDecode第二次:
<b>test</b>
我在网络开发方面不是专家,但我有大约2年的经验。这是我第一次见到这样的东西。我尝试将以下部分添加到Web.config
但没有运气:
<pages validateRequest="false" />
<httpRuntime requestValidationMode="2.0" /
<security>
<requestFiltering allowDoubleEscaping="false" />
</security>
如果我能提供更多信息,请告诉我。
答案 0 :(得分:0)
事实证明问题在于textarea
本身。在视图中,它只是一个标准的textarea
,但在Javascript document.Ready
中,它被设为kendoEditor
。 kendoEditor
首先编码HTML,然后ASP.net也应用其标准编码。将属性encoded
设置为false会修复问题:
$("#editor").kendoEditor({
encoded: false
});
<强>更新强>
我后来发现将encoded
属性设置为false会引入另一个问题。提交时,我在内置KendoEditor
工具栏中使用格式化工具时收到“从客户端检测到有潜在危险的Request.Form值”错误。我的解决方案是对发布的请求进行双重解码:
WebUtility.HtmlDecode(WebUtility.HtmlDecode(Request["value"]));