6

当我在 ASP.NET MVC 视图中从TinyMCE发布时出现此错误。

错误:

请求验证检测到潜在危险的客户端输入值,请求的处理已中止

通过谷歌搜索,它说只需在我所做的顶部的 Page 指令中添加一个 validateRequest ,但我仍然收到此错误。如您所见,以下是我在视图中的代码:

<%@ Page validateRequest="false" Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage" %>
4

5 回答 5

9

试试这个解决方案。只需添加到 TinyMce 控件

tinyMCE.init({
...
encoding : "xml"
});

http://wiki.moxiecode.com/index.php/TinyMCE:Configuration/encoding

http://blog.tentaclesoftware.com/archive/2010/07/22/96.aspx

于 2010-12-16T09:13:08.177 回答
5

尝试[AllowHtml]在模型中使用该属性。

class MyModel{
 [AllowHtml]
 public string Content{get;set;}
}
于 2012-03-03T11:03:38.390 回答
4

使用装饰器[ValidateInput(false)]

然后,您将需要编写一个 HTMLEncode 方法以使其安全。

如果您希望我发布我使用的那个,请告诉我。

添加了我使用的编码

    public static class StringHelpers
{
    public static string HtmlEncode(this string value)
    {
        if (!string.IsNullOrEmpty(value))
        {
            value = value.Replace("<", "&lt;");
            value = value.Replace(">", "&gt;");
            value = value.Replace("'", "&apos;");
            value = value.Replace(@"""", "&quot;");
        }
        return value;
    }

    public static string HtmlDecode(this string value)
    {
        if (!string.IsNullOrEmpty(value))
        {
            value = value.Replace("&lt;", "<");
            value = value.Replace("&gt;", ">");
            value = value.Replace("&apos;", "'");
            value = value.Replace("&quot;", @"""");
        }

        return value;
    }
}
于 2009-08-04T02:25:36.090 回答
0

令人讨厌的是,在 tinymce 的第 4 版中,他们似乎删除了 encoding: xml 选项。

我最终使用了这个答案中的 javascript HTML 编码函数,在我的提交按钮上,我使用 tinymce 的 getContent 和 setContent 方法在提交表单之前对 textarea 的内容进行了编码

于 2013-10-01T03:50:58.840 回答
0

我有同样的问题。我不想禁用 ASP.NET MVC 验证功能,所以我一直在寻找,直到找到这个解决方案:

在 tinyMCE 插件代码中对您的内容进行编码(我使用的是旧版本)

tinyMCE.init({
   ...
   encoding: "xml"
});

在此之后,我没有再收到应用程序验证错误。然后我在编辑表单时遇到了另一个问题,代码会带有 html 标签

<strong>My input value</strong>

而不是这个

我的输入值

因此,当我在 Controller 中获取值时,我必须解码该字段的 html,如下所示:

...    
entity.field = HttpUtility.HtmlDecode(entity.field);
于 2015-04-09T15:43:27.920 回答