帝国软件
  设为首页 加入收藏 关于我们
 
解密帝国网站管理系统
栏 目:
 
您的位置:首页 > 技术文档 > 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编程
   站点最新
·致合作伙伴的欢迎信
·媒体报道
·帝国软件合作伙伴计划协议
·DiscuzX2.5会员整合通行证发布
·帝国CMS 7.0版本功能建议收集
·帝国网站管理系统2012年授权购买说
·PHPWind8.7会员整合通行证发布
·[官方插件]帝国CMS-访问统计插件
·[官方插件]帝国CMS-sitemap插件
·[官方插件]帝国CMS内容页评论AJAX分
   类别最新
·ASP.NET中为DataGrid添加合计字段
·.text urlRewrite介绍
·利用 ASP.NET 的内置功能抵御 Web
·ASP.NET Cache
·用 WebClient.UploadData 方法 上载
·ASP.NET 程序设计-序
·什么是客户端/伺服端(Client/Serve
·因特网应用程序的开发
·网页的种类
·.NET Framework-Microsoft Visual
 
关于帝国 | 广告服务 | 联系我们 | 程序开发 | 网站地图 | 留言板 帝国网站管理系统