· ErrorMessage属性
该属性值为String类型,其用于当验证失败时,在ValidationSummary控件中显示的错误信息。如果未设置验证控件的Text属性,则验证失败时,验证控件中仍显示此文本。ErrorMessage属性通常用于为验证控件和ValidationSummary控件提供各种消息。注意:此属性不会将特殊字符转换为HTML实体。例如,小于号字符(<)不转换为<。这允许将HTML元素(如<IMG>元素)嵌入到该属性的值中
· IsValid属性
该属性值为bool类型,其用于指示ControlToValidate属性所指定的输入控件是否被确定为有效。
由该类派生的验证控件,可以不必再次实现以上通用属性,而只要根据应用需要另外定义一些属性和验证逻辑即可。例如,对于RangeValidator控件,除具有以上通用属性外,还定义了用于限定取值范围的MinimumValue和MaximumValue属性,以及用于指定要比较的值的数据类型的Type属性。此外,该控件的验证逻辑是通过重写BaseValidator.EvaluateIsValid方法实现的。由此看来,BaseValidator简化了自定义验证控件的实现过程,为控件开发人员提供了方便。
CustomValidator派生自BaseValidator类,它是5个内置验证控件之一。通常情况下,页面开发者使用CustomValidator来添加自定义的验证逻辑,这只要通过定义ServerValidate事件的事件处理方法以及ClientValidationFunction属性来完成。由于CustomValidator不提供复用机制(访问属性为public),因此自定义验证控件不能自该类派生。
(2)客户端实现机制
上文介绍了为实现验证控件,开发人员必须掌握的3个核心对象。掌握这些对象的定义和使用方法对于开发验证控件具有重要意义。通过它们,我们可以在服务器验证中添加验证逻辑。当页面回传时,验证目标控件的输入数据被发往服务器端参与验证逻辑。如果输入数据不能满足验证条件,那么页面将重新呈现,并且要求用户再次进行输入。整个验证过程可能需要多次往返,这样必然降低应用程序的易用性,并给服务器增加负担。
为了解决以上问题,开发人员必须学会为验证控件添加客户端验证机制。如果用户的浏览器支持DHTML和JavaScript技术,并且页面和验证控件的EnableClientScript均设置为true,那么就可以在客户端执行验证。客户端验证通过在向服务器发送用户输入前,检查用户输入、改变一些页面效果来增强验证过程。例如,通过在客户端检测输入错误,从而避免服务器端验证所需要的信息来回传递。服务器端验证总是要被执行的,这看起来好像是与客户端验证产生了重复,实际不然。出于安全考虑,如果某些用户通过手工提交恶意数据,而绕过客户端验证,那么服务器端验证的执行将对保护应用程序的安全性,甚至为服务器的安全性提供有力支持。
在ASP.NET 2.0中,如果开发人员使用内置验证控件实现验证功能,那么ASP.NET 2.0将自动产生相关的JavaScript代码。如果开发人员查看相关HTML源代码,那么将会发现有些来自WebResource.axd的JavaScript文件链接。然而,我们是无法查看相关文件代码的。这一点与ASP.NET 1.x不同。在ASP.NET 1.x中,默认情况下,在目录“C:\Inetpub\wwwroot\aspnet_client\system_web\版本号”中包含一个WebUIValidation.js文件。该文件中包括了实现客户端验证的JavaScript代码。开发人员可以通过阅读这些代码来了解验证功能的具体实现方法。ASP.NET 2.0中没有存在相关的源代码文件,而是通过WebResource.axd等机制来实现。
有关实现客户端验证的内容,主要涉及实现客户端功能等知识。这些内容在前面的文章中已经详细进行了讲解。有兴趣的读者可阅读有关文章。
3. 小结 本文主要介绍了内置验证控件,以及自定义验证控件实现机制。实际上,如果读者开发自行实现验证控件时,将会发现这个过程需要很多知识。例如,服务器端编程语言、JavaScript、CSS、DHTML等等。因此,如果读者希望创建高质量的验证控件,那么不仅要了解相关知识,而且必须达到精通的水平。

发表评论