ASP.NET 2.0服务器控件之验证控件示例(20
点击次数:21 次 发布日期:2008-11-26 12:17:29 作者:源代码网
|
源代码网推荐 源代码网推荐 下面列出客户端验证文件ClientValidator.js的源代码。 源代码网推荐 源代码网推荐 function TelNumValidatorEvaluateIsValid(val) 源代码网推荐 { 源代码网推荐 var validationexp = val.validationexp; 源代码网推荐 var valueToValidate = ValidateTrim(ValidateGetValue(val.controltovalidate)); 源代码网推荐 var rx = new RegExp(validationexp); 源代码网推荐 var matches = rx.exec(valueToValidate); 源代码网推荐 return (matches != null && valueToValidate == matches[0]); 源代码网推荐 } 源代码网推荐 源代码网推荐 /* 获取验证目标控件的输入数据 */ 源代码网推荐 源代码网推荐 function ValidateGetValue(id) 源代码网推荐 { 源代码网推荐 var control; 源代码网推荐 control = document.all[id]; 源代码网推荐 if (typeof(control.value) == "string") 源代码网推荐 { 源代码网推荐 return control.value; 源代码网推荐 } 源代码网推荐 if (typeof(control.tagName) == "undefined" && typeof(control.length) == "number") 源代码网推荐 { 源代码网推荐 var j; 源代码网推荐 for (j=0; j < control.length; j++) 源代码网推荐 { 源代码网推荐 var inner = control[j]; 源代码网推荐 if (typeof(inner.value) == "string" && (inner.type != "radio" || inner.status == true)) 源代码网推荐 { 源代码网推荐 return inner.value; 源代码网推荐 } 源代码网推荐 } 源代码网推荐 } 源代码网推荐 else 源代码网推荐 { 源代码网推荐 return ValidatorGetValueRecursive(control); 源代码网推荐 } 源代码网推荐 return ""; 源代码网推荐 } 源代码网推荐 源代码网推荐 /* 去除空格处理 */ 源代码网推荐 源代码网推荐 function ValidateTrim(s) 源代码网推荐 { 源代码网推荐 var m = s.match(/^s*(S+(s+S+)*)s*$/); 源代码网推荐 return (m == null) ? "" : m[1]; 源代码网推荐 } 源代码网推荐 源代码网推荐 由上代码可知,ClientValidatior.js文件中仅包括一个主方法TelNumValidatorEvaluateIsValid。该方法实现了与服务器端验证中,EvaluateIsValid方法相同的逻辑。同时,还包括两个辅助方法ValidateGetValue和ValidateTrim。前者用于获取验证目标控件的输入数据,后者用于去除空格处理。 源代码网推荐 源代码网推荐 为了测试当前自定义验证控件,下面列举了Default.ASPx页面源代码。 源代码网推荐 源代码网推荐 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> 源代码网推荐 <%@ ReGISter TagPrefix="Sample" Assembly="WebControlLibrary" Namespace="WebControlLibrary" %> 源代码网推荐 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 源代码网推荐 源代码网推荐 <html XMLns="http://www.w3.org/1999/xhtml"> 源代码网推荐 <head runat="server"> 源代码网推荐 <title>实现一个验证控件</title> 源代码网推荐 </head> 源代码网推荐 <body> 源代码网推荐 <form id="form1" runat="server"> 源代码网推荐 <div style="font-size: small;"> 源代码网推荐 <asp:TextBox ID="textbox" runat="server"></asp:TextBox> 源代码网推荐 <asp:Button ID="Button1" runat="server" Text="提交"></asp:Button> 源代码网推荐 <Sample:TelNumValidator ID="demo1" runat="server" Display="dynamic" ControlToValidate="textbox" Text="请输入有效的电话号码" ErrorMessage="正确的格式为010-12345678或者0123-1234567"></Sample:TelNumValidator> 源代码网推荐 <br /><br /> 源代码网推荐 <asp:ValidationSummary runat="server" ForeColor="blue" DisplayMode="singleParagraph" HeaderText="错误信息:" ID="ValidationSummary1"></asp:ValidationSummary> 源代码网推荐 </div> 源代码网推荐 </form> 源代码网推荐 </body> 源代码网推荐 </html> 源代码网推荐 源代码网推荐 在以上实现中,请读者重点关注自定义验证控件的属性设置。该控件主要设置了以下几个重要属性。 源代码网推荐 源代码网推荐 (1)ControlToValidate属性,通过设置该属性,从而实现了验证控件TelNumValidator和验证目标控件TextBox之间的关联。 源代码网推荐 源代码网推荐 (2)Display属性,通过设置该属性可设置错误信息显示方式。 源代码网推荐 源代码网推荐 (3)ErrorMessage,该属性用于获取或设置验证失败时ValidationSummary控件中显示的错误信息的文本。为此,在代码中还设置了一个对应的ValidationSummary控件。 源代码网推荐 源代码网推荐 (4)Text,该属性用于获取或设置验证失败时验证控件中显示的文本。 源代码网推荐 源代码网推荐 需要注意的是以上4个属性都继承自BaseValidator基类。另外,如果应用程序部署需要,开发人员还可以修改验证控件的ClientFileUrl属性。 源代码网推荐 源代码网推荐 3. 小结 源代码网推荐 源代码网推荐 本文通过一个典型示例说明了验证控件的实现方法。相信读者已经能够感到,如果实现高质量的验证控件,开发人员必须掌握多方面的知识,尤其是JavaScript语言等。另外,本文所涉及的JavaScript代码被包含在js文件中。开发人员也可以将这些代码作为资源文件编译到验证控件的dll文件中。这种实现方法非常有利于控件的部署工作。有兴趣的读者可以试一试。 源代码网推荐 源代码网推荐 做人要厚道,请注明转自酷网动力(www.ASPCOOL.COM)。 源代码网推荐 源代码网供稿. |
