ASP.NET MVC URL参数双重转义?

时间:2013-08-29 13:04:51

标签: c# asp.net-mvc kendo-ui url-parameters

我有一个包含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>

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

1 个答案:

答案 0 :(得分:0)

事实证明问题在于textarea本身。在视图中,它只是一个标准的textarea,但在Javascript document.Ready中,它被设为kendoEditorkendoEditor首先编码HTML,然后ASP.net也应用其标准编码。将属性encoded设置为false会修复问题:

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

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

WebUtility.HtmlDecode(WebUtility.HtmlDecode(Request["value"]));