我们可以只为一个元素设置ValidatInput(false)吗?

时间:2010-11-26 00:11:08

标签: asp.net-mvc asp.net-mvc-2 validation

很容易设置我们的操作,不是仅仅连接像

这样的属性来验证输入
[HttpPost, ValidateInput(false)]
public ActionResult Signup(SignupModel model)
{
    ... 
}

但我想知道,有没有办法只在一个表格领域做到这一点?而不是所有这些都在实际的<form>

或者,我必须使用它,然后担心正确编码所有其他字段?

2 个答案:

答案 0 :(得分:0)

依靠ValidateInput来“编码”您的值。它不对值进行编码 - 它只是完全拒绝某些值。即使您使用它,您仍然必须编码用户输入的所有值,并以任何方式显示在网站上。

事实上,正因为如此 - 我自己从未使用过验证。例如,如果我所做的只是依赖于验证,人们将无法在这样的表格中输入一些非常基本的东西,例如尝试显示示例HTML。

但即使是MSDN文档和我读过的每本书都说,那里的ASP.NET验证可以保护您免受所有可能的恶意输入。基本上,您可以依赖它来保护您的用户。你仍然必须对你正在显示的值进行编码(你应该只在你显示它们时对它们进行编码,否则你最终会遇到各种各样的显示错误,你们已经对它进行了双重编码)

答案 1 :(得分:0)

使用MVC3,可以通过指定SkipRequestValidation将该属性应用于Model。