帝国软件
  设为首页 加入收藏 关于我们
 
解密帝国网站管理系统
栏 目:
 
您的位置:首页 > 技术文档 > ASP.NET编程 >
CustomValidator Web 控件
作者:佚名 发布时间:2005-04-02 来源:不详
 


    如果我们所要处理的数据有上列数据验证Web 控件无法执行的特殊表达式,可以利用CustomValidator Web 控件可以让我们自定数据的检验方式。其使用语法为:

<ASP:CustomValidator
Id="被程序代码所控制的名称"
Runat="Server"
ControlToValidate="要验证的控件名称"
OnServerValidate="自订的验证程序"
ErrorMessage="所要显示的错误信息"
Text="未通过验证时所显示的讯息"
/>

其常用属性说明如下表所示:

    CustomValidator Web 控件在执行自订的验证时,是呼叫OnServerValidate 属性所指定的程序来执行验证;当被呼叫的程序传回True 时则表示验证成功,传回False 则表示验证失败。其方法的宣告语法如下所示:

Function 程序名称(Sender As Object, Value As String)As Boolean
'验证成功
Return True
'验证失败
Return False
End Function

    由于这个事件程序要明确的宣告传回值的数据型态,所以这里我们要在这个事件程序以Function来宣告,并且要指明传回值的型态为Boolean。另外程序内所接收的第二个参数Value 表示使用者输入的资料,我们可以将这个参数作验证后,再传回代表验证成功的True 或验证失败的False。下列范例限制使用者必须输入十的倍数才可以通过验证:

<Html>
<Form Id="Form1" Runat="Server">
请输入10 的倍数: <ASP:TextBox Id="txtValue" Runat="Server"/>
<ASP:Button Id="btnOK" Text="确定" OnClick="btnOK_Click"
Runat="Server"/><br>
<ASP:CustomValidator Id="Validor1" Runat="Server"
ControlToValidate="txtValue"
OnServerValidate="CustVali"
Text="必需输入十的倍数!"/><br>
<ASP:Label Id="lblMsg" Runat="Server"/>
</Form>
<Script Language="VB" Runat="Server">
Function CustVali(Sender As Object, Value As String)As Boolean
If Value.ToInt16 Mod 10=0 Then
Return True
Else
Return False
End If
End Function
Sub btnOK_Click(Sender As Object,e As Eventargs)
If Page.IsValid Then
lblMsg.Text="验证成功!"
Else
lblMsg.Text="验证失败!"
End If
End Sub
</Script>
</Html>


    下列的范例为验证使用者的身分证号码。身分的验证在网页的应用上蛮常见的,首先我们先来了解验证的公式。身分证号码有十位数,我们将这十个位数进行编号,从第一位数F1 编到第十位数F10;如下所示:

其中英文字母有特定的编号,如下表所示:


身分证验证的公式为:

总和=(F10 的个位数+(F10 的十位数
×9)+(F9×8)+(F8×7)+( F7×6)+( F6×5)+( F5×4)+( F4×3)+( F3×2)+( F2
+F1))

如果总和除以10 可以被整除,那么表示使用者所输入的身分证号码是正确的。其验证的程序代码如下所示:

<Html>
<Form Id="Form1" Runat="Server">
请输入身分证号码: <ASP:TextBox Id="txtValue" Runat="Server"/>
<ASP:Button Id="btnOK" Text="确定" OnClick="btnOK_Click"
Runat="Server"/><br>
<ASP:CustomValidator Id="Validor1" Runat="Server"
ControlToValidate="txtValue"
OnServerValidate="CustVali"/><br>
<ASP:Label Id="lblMsg" Runat="Server"/>
</Form>
<Script Language="VB" Runat="Server">
Function CustVali(Sender As Object, Value As String)As Boolean
If Len(Value)<>10 Then '如果位数小于10
Validor1.Text="请输入十位数!"
Return False
Else If Char.IsLetter(Left(Value,1))=False Then '检查第一个字符是
不是英文字母
Validor1.Text="必须以英文字母开头!"
Return False
End if
Dim shtI, shtJ, shtK As Short
For shtI=2 To 10 '检查第二位至第十位是否为数值
If IsNumeric(Mid(Value, shtI, 1))=False Then
Validor1.Text="第二位至第九位必须是数值!"
Return False
End If
Next
'以下依序宣告26 个英文字母所代表的编号
Dim arF1() As Short = {10,11,12,13,14,15,16,17,34,18,19,20,21, _
22,35,23,24,25,26,27,28,29,30,41,42,33}
shtI=arF1(Asc(UCase(Left(Value,1)))-65) '取得使用者输入英文字母
的编号
For shtJ=2 To 8 '计算加总
shtK+=Mid(Value, shtJ, 1).ToInt16 * (10-shtJ)
Next
shtK+=Mid(Value, 9, 1).ToInt16 + Mid(Value, 10, 1).ToInt16 + _
Left(shtI.ToString, 1).ToInt16 + (Left(shtI.ToString,
2).ToInt16 * 9)
If shtK Mod 10 <> 0 Then '如果算式加总不能被10 整除
Validor1.Text="您所输入的身分证号码不正确!"
Return False
Else
Return True '验证成功, 传回True
End If
End Function
Sub btnOK_Click(Sender As Object,e As Eventargs)
If Page.IsValid Then
lblMsg.Text="验证成功!"
Else
lblMsg.Text="验证失败!"
End If
End Sub
</Script>
</Html>


如果只输入三位数。

如果只输入十位数值。

如果随便输入身分证号码。

如果输入A123456789 正确的身分证号码。
  
评论】【加入收藏夹】【 】【打印】【关闭
※ 相关链接
无相关信息

   栏目导行
  PHP编程
  ASP编程
  ASP.NET编程
  JAVA编程
   站点最新
·致合作伙伴的欢迎信
·媒体报道
·帝国软件合作伙伴计划协议
·放眼未来 帝国近期将有重大举措!
·PHPWind6.3.2版通行证发布
·帝国备份王2008版正式发布
·帝国备份王2008版发布
·phpcms2007转帝国CMS5.0程序发布
·dedecms5.1转帝国CMS5.0程序发布
·帝国网站管理系统V5.0商业购买说明
   类别最新
·ASP.NET中为DataGrid添加合计字段
·.text urlRewrite介绍
·利用 ASP.NET 的内置功能抵御 Web
·ASP.NET Cache
·用 WebClient.UploadData 方法 上载
·ASP.NET 程序设计-序
·什么是客户端/伺服端(Client/Serve
·因特网应用程序的开发
·网页的种类
·.NET Framework-Microsoft Visual
 
关于帝国 | 广告服务 | 联系我们 | 程序开发 | 网站地图 | 留言板 帝国网站管理系统