我在我的MVC.NET网站上使用CKEditor / CKFinder作为wysiwyg编辑器。
我设置了[ValidateInput(false)]
,它在本地调试时有效,但在发布网站时收到以下错误:
A potentially dangerous Request.Form value was detected from the client (message="<p>
<em>Testing</e...").
任何人都可以解释为什么发布的网站与本地网站不同,特别是当我设置[ValidateInput(false)]
时?
* 更新: *我正在使用.Net 3.5,所以不应该[ValidateInput(false)]
开箱即用?
答案 0 :(得分:24)
您是否尝试过设置htmlEncodeOutput属性?
> CKEDITOR.replace('editor1', {
> htmlEncodeOutput: true });
这应该对输出进行编码,您应该可以避免设置requestValidationMode。
它的文档在这里:ckEditor documentation
答案 1 :(得分:7)
将此添加到您的web.config:
<httpRuntime requestValidationMode="2.0" />
答案 2 :(得分:0)
只需将一个注释添加到Post方法Action作为[ValidateInput(false)]
[HttpPost]
[ValidateAntiForgeryToken]
[ValidateInput(false)]
public ActionResult Detail(ModelClass m)
{ return View(); }
答案 3 :(得分:0)
ValidateRequest =“ false” 将此添加到特定的页面。
示例:
答案 4 :(得分:0)
将ValidateRequest="false"
添加到您的页面:
<%@ Page Language="C#" AutoEventWireup="false" Codebehind="MyForm.aspx.cs" Inherits="Proj.MyForm" ValidateRequest="false"%>
或者如果使用.NET Framework 4.0(Visual Studio 2010),则添加到web.config
<httpRuntime requestValidationMode="2.0" />
答案 5 :(得分:0)
使用Request.Unvalidated["myTextBox"]
例如,
var text = Request.Unvalidated["myTextBox"];
其中“ myTextBox”是您要允许从中发布HTML的表单字段。