2013-08-29 29 views
0

我有一个包含HTML的文本区域。我期望内容在发布到控制器方法时被转义,但我发现它被转义了两次。什么可能造成这种情况?看下面的例子:ASP.NET MVC URL参数双转义?

<b>test</b> 

WebUtility.HtmlDecode第1次:

<b>test</b> 

WebUtility.HtmlDecode第2次:

<b>test</b> 

我没有

从请求拉当谈到网络开发时,他是专家,但我有大约2年的经验。这是我第一次看到这样的事情。我已经尝试添加以下部分,我Web.config没有运气:

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


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

请让我知道如果我可以提供更多的信息。

+0

你见过[允许用户在asp.net MVC中输入HTML](http://stackoverflow.com/questions/3621272/allow-user-to - 输入-HTML-在-ASP净MVC)? – Romoku

+0

我有,但我还没有运气与这些解决方案。从请求中拉出的字符串仍然是两次逃脱。 – alan

+0

view/viewmodel/controller是什么样的? – Romoku

回答

0

原来问题出在textarea本身。在看来,它只是一个标准textarea,但在Javascript document.Ready然后被作为kendoEditorkendoEditor先编码HTML,然后ASP.net也使用它的标准编码。设置属性encoded等于假固定的问题:

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

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

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

不要忘记标记你的答案是正确的;) –