验证控件-服务器端验证

作者:vkvi 来源:ITPOW(原创) 日期:2007-11-19

之前讲的几个验证控件,除了 CustomValidator 都可以在客户端进行验证,那么服务器端会不会再次验证呢?如果服务器端不再次验证那客户端不是可以绕过验证了。非常高兴的是,默认情况下,客户端和服务器端都会验证。我们这一节就是要了解几个与验证相关的属性和方法,这对我们开发高级程序大有好处。

  • Validate() 验证控件和 Page 均具有此方法,表示在服务器端调用验证,Page 的 Validate() 方法中还可以多带一个参数,在后面讲到。
  • IsValid 验证控件和 Page 均具有此属性,表示验证是否通过。
  • CausesValidation 这个是 TextBox、Button 等控件的属性,不是验证控件的属性,表示是否自动进行验证。可选值为:true、false。TextBox 等输入类控件的默认值为 false;Button 等按钮的默认值是 true。
    • TextBox 的 CausesValidation 默认值为 false,也就是说由 TextBox 触发回发时,该网页的验证控件在客户端和服务器端都不会自动工作,得人工调用 Validate() 来进行验证;
    • 那么 TextBox 会不会触发回发呢?默认不会,因为其 AutoPostBack 属性值默认为 false。如果我们将 TextBox 的 AutoPostBack 设为 true,则 TextBox 的值有变化时,会触发回发。
    • Button 的 CausesValidation 默认值为 true,也就是说单击 Button 时,该网页的验证控件在客户端和服务器端都会自动工作,程序员没有必要再调用 Validate()。
  • ValidationGroup 验证组。举例说明:“用户资料”分为“登录资料”和“真实资料”,如果没有 ValidationGroup,则“登录资料”和“真实资料”是一起验证的。现在我想先验证“登录资料”,验证通过后再验证“真实资料”(实际中 ValidationGroup 常用于根据条件进行选择性的验证),则需要把验证“登录资料”的验证控件的 ValidationGroup 属性值设置为同一个值,而把验证“真实资料”的验证控件的 ValidationGroup 属性值设置为另一个值。
    • 指定了 ValidationGroup 的验证控件不会自动工作;
    • 也就是说指定了 ValidationGroup 的验证控件不会在客户端工作,在服务器端也不会自动工作。
    • 要让指定了 ValidationGroup 的验证控件在服务器端工作,就必须调用该控件的 Validate() 方法,或者调用 Page.Validate() 方法,或者调用 Page.Validate(string validationGroup) 方法。Page.Validate() 相当于调用页面中所有的验证控件的 Validate(),而 Page.Validate(string validationGroup) 相当于调用页面中 ValidationGroup 属性值为 validationGroup 的验证控件的 Validate()。
  • 再回头说一说 IsValid,验证控件的 IsValid 默认值是 true,但 Page.IsValid 不能随便使用,要使用 Page.IsValid 必须是验证控件自动工作了之后,或者手动调用了 Page.Validate() 之后,或者手动调用了 Page.Validate(string validationGroup) 之后。
相关文章