2010-08-23 39 views
6

有没有一种方法可以禁用某些文本框而不是整个页面的请求验证?我使用Server.HtmlEncode/Decode,因为用户合法使用<和>字符,但我不想在整个页面上使用ValidateRequest="false",因为有人可能稍后添加文本框并忘记跳过输入,在这种情况下,我会希望验证发生,以便发现错误,而不是容易受到html注入的影响。asp.net ValidateRequest = false每个文本框而不是每页?

似乎必须有一个简单的解决方案,但我没有找到它的运气。

(Web表单不MVC)

+0

嗯,这是痛苦的 - > .NET 4.5发布我的答案时未发布。 – Tommy 2012-11-02 19:04:09

+0

@Tommy我知道,也不是当我问这个问题的时候,但是它是更新的答案,对未来的用户更有用。你回答仍然是upvoted。 – Davy8 2012-11-02 19:06:14

+0

哈哈 - 我知道:)没有什么个人的,但我确实必须来检查一下。 PS - 看起来像我在下面的.NET 5.0评论。 – Tommy 2012-11-02 19:09:09

回答

3

否,请求验证是整个请求,并且不能由基础元件的元件上完成的。请求验证默认情况下由ASP.NET启用,旨在帮助那些不知道如何从脚本注入攻击中清除HTML输入的应用程序。下面贴一些链接进一步阅读:

MSDN

Stackoverflow

+0

我觉得不可能每个控制都做不到。即使是一个知道自己在做什么的人偶尔也会忘记,并且有一个备用方案会很好。无论如何+1,因为我没有找到任何相反的东西。如果明天没有出现,我会接受。 – Davy8 2010-08-23 22:42:24

+0

也许.NET 5.0的东西:) – Tommy 2010-08-23 22:47:55

+0

我同意这是可笑的,这是不支持的,但我的理解是@Tommy是正确的,这在目前的ASP.NET中是不可能的。 – Stuart 2010-08-23 23:37:01

相关问题