当前位置:  开发笔记 > 后端 > 正文

是否可以覆盖页面的ValidateRequest设置?

如何解决《是否可以覆盖页面的ValidateRequest设置?》经验,为你挑选了2个好方法。

我有一个ASP.NET MVC表单,可能(通常会)提交一个响应,触发"从客户端检测到一个潜在危险的Request.Form值"错误.

为了解决这个问题,我在页面指令中放置了一个ValidateRequest ="false".

唯一的问题:我仍然得到错误!

现在,一切都很好,直到我今天早上更新到ASP.NET MVC RC,并且(根据自述文件),将以下内容放在Views web.config中:


    
        
    

因此,对于所有页面,validateRequest都应为false,对吧?我错过了什么?



1> Levi..:

在MVC中,验证发生在控制器级别,而不是页面级别.要知道这是为什么,请考虑在执行控制器操作时,我们不知道将选择哪个视图进行渲染.(实际上,控制器操作甚至可能根本不呈现视图!它可能会在客户端上打开文件下载提示.)此外,如果用户向服务器提交恶意输入,则在呈现视图时它是为时已晚,无所事事.控制器已经将危险的输入提交给数据库.

相反,请使用属性[ValidateInput(false)]装饰控制器或操作.这将导致我们取消对该控制器或操作的请求验证.



2> Juan Carlos ..:

它需要使用属性[ValidateInput(false)]来装饰控制器或动作,并将requestValidationMode ="2.0"添加到web.config文件中:示例:

控制器:

    [ValidateInput(false)]
    public class MensajesController : Controller
    {
        //or in an action
        [ValidateInput(false)]
        [HttpPost]
        public ActionResult Create(FormCollection collection)
        {
        }
    }

配置文件:

    
        
           
        
    


是的,需要为.NET 4设置requestValidationMode.感谢您的更新.
推荐阅读
罗文彬2502852027
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有