当我在ASP.NET MVC视图中从TinyMCE发帖时,我收到此错误。
错误:
请求验证检测到潜在危险的客户端输入值,并且请求的处理已中止
从谷歌搜索,它说只是在我做的顶部的Page指令中添加了validateRequest,但我仍然得到这个错误。如您所见,以下是我在视图中的代码:
<%@ Page validateRequest="false" Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage" %>
答案 0 :(得分:9)
试试这个解决方案。只需添加到TinyMce控件
tinyMCE.init({
...
encoding : "xml"
});
http://wiki.moxiecode.com/index.php/TinyMCE:Configuration/encoding
答案 1 :(得分:5)
使用装饰器[ValidateInput(false)]
。
然后,您将需要编写HTMLEncode方法以确保其安全。
如果您希望我发布我使用的那个,请告诉我。
添加了我使用的编码
public static class StringHelpers
{
public static string HtmlEncode(this string value)
{
if (!string.IsNullOrEmpty(value))
{
value = value.Replace("<", "<");
value = value.Replace(">", ">");
value = value.Replace("'", "'");
value = value.Replace(@"""", """);
}
return value;
}
public static string HtmlDecode(this string value)
{
if (!string.IsNullOrEmpty(value))
{
value = value.Replace("<", "<");
value = value.Replace(">", ">");
value = value.Replace("'", "'");
value = value.Replace(""", @"""");
}
return value;
}
}
答案 2 :(得分:5)
尝试使用模型中的[AllowHtml]
属性。
class MyModel{
[AllowHtml]
public string Content{get;set;}
}
答案 3 :(得分:0)
令人讨厌的是,他们似乎已经删除了编码:xml选项。
我最终使用来自this answer的javascript HTML编码函数,在我的提交按钮上,我使用tinymce的getContent和setContent方法在表单提交之前对textarea的内容进行编码,
答案 4 :(得分:0)
我遇到了同样的问题。我不想禁用ASP.NET MVC验证功能,所以我一直在寻找,直到我达到这个解决方案:
在tinyMCE插件代码中编码您的内容(我使用旧版本)
tinyMCE.init({
...
encoding: "xml"
});
在此之后,我没有再收到应用程序验证错误。然后当我编辑我的表单时,我想出了另一个问题,代码会出现html标签
<strong>My input value</strong>
而不是
我的输入值
所以,在控制器上获取我的值时,我必须解码该字段的html,如下所示:
...
entity.field = HttpUtility.HtmlDecode(entity.field);