ASP.NET 服务器控件的客户端验证

更新:2007 年 11 月

如果用户使用的浏览器支持动态 HTML (DHTML),则 ASP.NET 验证控件可以使用客户端脚本来执行验证。因为这种控件可以提供及时反馈(无需到服务器的往返过程),所以用户会感觉到页的性能有所改善。

在大多数情况下,无需对页或验证控件作出任何更改便可使用客户端验证。控件将自动检测浏览器是否支持 DHTML 并执行相应的检查。客户端验证使用的错误显示机制和服务器端验证相同。

yb52a4x0.alert_security(zh-cn,VS.90).gif安全说明:

即使已经在客户端上执行了验证,也必须在服务器上执行验证。这允许您通过服务器代码来确定验证状态,并且避免用户避开验证,从而提供了更高的安全性。

客户端验证的差异

如果是在客户端上执行验证,则验证控件可以包括某些附加功能:

  • 如果打算生成验证错误信息摘要,您可以在消息框中显示这些信息,该框在用户提交页时出现。有关详细信息,请参见 如何:控制 ASP.NET 服务器控件的验证错误信息显示

  • 验证控件的对象模型在客户端略有不同。请参见本主题中后面的客户端验证对象模型。

客户端验证具有以下几个细微不同之处:

  • 如果启用客户端验证,则页将包含对执行客户端验证所用的脚本库的引用。

  • 使用 RegularExpressionValidator 控件时,如果可以使用兼容 ECMAScript 的语言(例如 Microsoft JScript),则可以在客户端检查表达式。客户端正则表达式检查与在服务器上使用 Regex 类进行的正则表达式检查相比,两者的差异非常小。

  • 页中包含客户端方法,以便在页提交前截获并处理 Click 事件。

客户端验证对象模型

验证控件在客户端上呈现的对象模型与在服务器上呈现的对象模型几乎完全相同。例如,无论在客户端上还是在服务器上,您都可以通过相同的方式读取验证控件的 IsValid 属性以测试验证。

但是,在页级别上公开的验证信息有所不同。在服务器上,页支持属性;在客户端,它包含全局变量。下表比较了在页上公开的信息。

客户端页变量

服务器页属性

Page_IsValid

IsValid

Page_Validators(数组)   包含对页上所有验证控件的引用。

Validators(集合)   包含对所有验证控件的引用。

Page_ValidationActive   表示是否应进行验证的布尔值。通过编程方式将此变量设置为 false 以关闭客户端验证。

(无等效项)

yb52a4x0.alert_note(zh-cn,VS.90).gif说明:

所有与页相关的验证信息都应被视为只读信息。

发送具有客户端验证错误的页

在某些情况下,您可能不愿意使用客户端验证而愿意仅使用服务器端验证,即使是可以使用客户端验证亦如此。例如,如果验证需要使用只有服务器才有的信息或资源(例如访问数据库),则客户端验证不可行。

默认情况下,在执行客户端验证时,如果页上出错,则用户无法将页发送到服务器。但您可能发现有必要允许用户即使在出错时也可以发送。例如,页上可能有一个取消按钮或一个导航按钮,您需要该按钮即使在部分控件未通过验证的情况下也提交页。有关更多信息,请参见 如何:禁用 ASP.NET 服务器控件验证

请参见

概念

ASP.NET 服务器控件验证类型

其他资源

验证 ASP.NET 控件