0

我有一个包含 HTML 的文本区域。我希望内容在发布到控制器方法时被转义,但我发现它被转义了两次。什么可能导致这种情况?请参见下面的示例:

从请求中提取:

<b>test</b>

WebUtility.HtmlDecode 第一次:

<b>test</b>

WebUtility.HtmlDecode 第二次:

<b>test</b>

在 Web 开发方面,我不是专家,但我有大约 2 年的经验。这是我第一次看到这样的事情。我尝试将以下部分添加到我Web.config的列表中,但没有成功:

<pages validateRequest="false" />
<httpRuntime requestValidationMode="2.0" /


<security>
  <requestFiltering allowDoubleEscaping="false" />
</security>

如果我能提供更多信息,请告诉我。

4

1 回答 1

0

原来问题出在它textarea本身。在视图中它只是一个标准textarea,但在 Javascriptdocument.Ready中被做成了一个kendoEditor. 首先kendoEditor是对 HTML 进行编码,然后 ASP.net 也在应用其标准编码。将属性设置encoded为 false 可以解决问题:

    $("#editor").kendoEditor({
        encoded: false
    });

更新: 我后来发现将encoded属性设置为 false 会引入另一个问题。在提交时,我在使用内置KendoEditor工具栏中的格式化工具时收到“从客户端检测到潜在危险的 Request.Form 值”错误。我的解决方案是对发布的请求进行双重解码:

WebUtility.HtmlDecode(WebUtility.HtmlDecode(Request["value"]));
于 2013-08-29T13:35:37.560 回答