CustomValidator 控件允许您用自定义的验证逻辑创建验证控件。例如,可以创建一个验证控件,该控件检查在文本框中输入的值是否为偶数。
验证控件总是在服务器上执行验证检查。它们还具有完整的客户端实现,该实现允许支持 DHTML 的浏览器(如 Microsoft Internet Explorer 4.0 或更高版本)在客户端执行验证。客户端验证通过在向服务器发送用户输入前检查用户输入来增强验证过程。这使得在提交窗体前即可在客户端检测到错误,从而避免了服务器端验证所需要的信息的来回传递。
若要创建服务器端验证函数,请为执行验证的 ServerValidate 事件提供处理程序。通过将 ServerValidateEventArgs 对象的 Value 属性作为参数传递到事件处理程序,可以访问来自要验证的输入控件的字符串。验证结果随后将存储在 ServerValidateEventArgs 对象的 IsValid 属性中。
若要创建一
javascript方法:
function ClientValidate(source, arguments) {
if ((arguments.Value % 2) == 0)
arguments.IsValid = true;
else
arguments.IsValid = false;
}如果正在使用 JScript,则该函数必须采用以下形式:
Function ValidationFunctionName (source, arguments)与服务器端验证类似,使用 arguments 参数的 Value 属性访问要验证的值。通过设置 arguments 参数的 IsValid 属性来返回验证结果。
警告
创建客户端验证函数时,请务必同时包括服务器端验证函数的功能。如果创建客户端验证函数时不存在相应的服务器端函数,则恶意代码可能会绕过验证。
多个验证控件可以同单个输入控件相关联,以验证不同的判据。例如,可将多个验证控件应用于 TextBox 控件,该控件使用户可以输入要添加到购物车中的商品数量。可以使用 CustomValidator 控件确保指定的值小于商品目录中的数量,并使用 RequiredFieldValidator 控件确保用户向 TextBox 控件输入值。
注意
如果输入控件为空,则不调用任何验证函数且验证成功。使用 RequiredFieldValidator 控件防止用户跳过某个输入控件。
不设置 ControlToValidate 属性也可以使用 CustomValidator 控件。当验证多个输入控件或验证无法与验证控件一起使用的输入控件(如 CheckBox 控件)时,通常这样做。在这种情况下,arguments 参数(该参数传递给 ServerValidate 事件的事件处理程序并传递给客户端验证函数)的 Value 属性总是包含一个空字符串 ("")。但是,仍在适当的位置调用这些验证函数,以确定服务器和客户端上的有效性。若要访问要验证的值,必须以编程方式引用要验证的输入控件,然后从适当的属性中检索该值。例如,若要在服务器上验证 CheckBox 控件,请不要设置验证控件的 ControlToValidate 属性使用 ClientValidationFunction 属性指定与 CustomValidator 控件相关联的客户端验证脚本函数的名称。由于脚本函数在客户端执行,该函数必须使用目标浏览器所支持的语言,如 Visual Basic 或 JScript。