c# - 我应该总是调用 Page.IsValid 吗?

标签 c# asp.net .net validation

我知道永远不要相信用户输入,因为不受欢迎的输入可能会以某种方式损害应用程序的完整性,无论是无意的还是有意的;但是,是否存在即使页面上没有验证控件也调用 Page.IsValid 的情况(同样,我知道通过省略验证来信任用户输入的不良做法)? Page.IsValid 是否执行任何其他类型的验证?我查看了 MSDN,文档似乎表明 Page.IsValid 仅在页面上有验证控件或调用了 Page.Validate 方法时才有效。我的一个 friend 建议我每次都检查按钮单击处理程序中的 Page.IsValid,即使没有验证控件或显式的 Page.Validate 调用也是如此。

最佳答案

我会第一个告诉你“所有输入都是邪恶的,除非证明不是这样。”但是,在这种情况下,我认为你的 friend 是错误的,因为按照他/她的逻辑我们可能想出一百个应该检查或设置的其他属性,即使默认值没问题。

检查 Page.IsValid 只有在您有“CausesValidation”场景时才有意义 - 提交表单的按钮将其 CausesValidation 属性设置为 True。这将自动调用 Page.Validate,并且将检查属于同一 ValidationGroup 的所有验证控件的有效性。

编辑:

刚刚使用 Reflector 检查它,如果页面没有任何验证器(ValidatorCollection 为 null),该函数将始终返回 True。

关于c# - 我应该总是调用 Page.IsValid 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1039465/

相关文章:

c# - Razor View 中的字符串插值?

c# - 通过共享内存将数据从 C++ 流式传输到 C#

asp.net - HttpRequest,HttpWebRequest和WebRequest之间的区别

.net - 程序集名称和文件名可以不同吗?

.net - .NET 消费者线程处理两个队列的算法(基于优先级)

c# - c#中的双向循环链表

c# - 使用 Entity Framework 6.4 进行延迟加载时如何异步调用关系?

c# - 简单注入(inject)器的工厂设施

c# - HttpModule 更改响应

c# - XSLT 与 XMLDocument 数据类型 -> 使用 foreach 循环遍历节点 -> 附加到文字控件