2009-07-14 79 views
0

在我们的ASP.NET MVC应用程序之一,我们正在使用FCKEditor的,允许用户输入富文本。为了关闭验证控制器动作,我们设置属性“有潜在危险的Request.Form值。”当ModelState.IsValid是错误假

[ValidateInput(false)] 

用户可以只要在页面没有业务验证错误,保存和修改的富文本。

如果有任何业务验证的失败,并且ModelState.IsValid设置为false,渲染以下异常引发的页面。有人可以让我知道如何解决这个问题吗?从客户端检测到

有潜在危险的Request.Form值(Programme_Overview =”

下面是代码

[ValidateInput(false)] 
    [AcceptVerbs(HttpVerbs.Post)] 
    public ActionResult Schedule(FormCollection formValues) 
    { 
     // some code 
     if (ModelState.IsValid) 
     { 
      //do something here... 
     } 
     else 
     {    
      return View(programDetails); 
     } 


    } 

    //// View code that render the fckeditor text area 
    <%= Html.TextArea("Programme_Overview", Model.Programme.Overview, new { row = 7 })%> 
+0

对不起忘了提,诠释他的原职。我们在动作方法中设置了[ValidateInput(false)]。但还是此异常只是提出如果ModelState.IsValid是假 – Gopinath 2009-07-14 07:48:10

回答

0

很可能从你的FCKEditor的一些输出HTML被以某种方式提交。

你可以尝试切换验证关:

public MyController 
{ 
    [ValidateInput (false)] 
    public ActionResult MyAction() 
    { 
    } 
} 
0

只需添加以下到你的动作:

[ValidateInput(false)] 
[AcceptVerbs(HttpVerbs.Post)] 
public ActionResult SomeAction() {} 
+0

即使指定后[ValidateInput(假),如果ModelState.IsValid设置为false,而渲染视图 – Gopinath 2009-07-14 07:48:53

+0

你能告诉我们你的操作方法,并在异常升高html表单? – 2009-07-14 08:38:15

+0

达林,我用代码更新了问题。 – Gopinath 2009-07-14 11:50:23

0

我猜这个项目从前期1.0 RTM项目迁移。

原始ASP.NET有你绊倒了页面级别的“危险输入”验证。我们已经在系统范围内通过更改Views文件夹中的Web.config文件来关闭它,但我不记得我们是什么时候做出这样的改变。如果您的项目预先进行了此更改,那么您将不会在Views文件夹中的Web.config文件中具有该设置。

这样就可以使一个新的MVC项目,并期待在Web.config文件中看到您可能希望复制在什么设置(S)。如果需要,也可以逐页禁用此功能。

http://www.asp.net/learn/whitepapers/request-validation/

+0

Brad Wilson, 我不确定我们有什么版本的MVC。你能告诉我如何在我的电脑上找到它吗? 2个月前,我们在Web Installer的帮助下安装了MVC。位于View文件夹中的web.config文件有 <页 validateRequest =“false” pageBaseType =“System.Web.Mvc.ViewPage,System.Web.Mvc,Version = 1.0.0。0,Culture = neutral,PublicKeyToken = 31BF3856AD364E35“ – Gopinath 2009-07-16 09:55:55

+0

你有1.0安装,我看到validatedRequest =”false“行在那里,所以我不清楚你为什么应该打这个错误(除非你已经添加了”validateRequest = true“到您的实际页面中的<%@ Page %>指令)。 – 2009-07-16 21:48:09

1

只是有这茬了,弄不好是要更新FCK配置文件 fckconfig.js

FCKConfig.HtmlEncodeOutput = false; 

应该

FCKConfig.HtmlEncodeOutput = true ; 
相关问题