动网论坛,站长建站首选,国内使用量最多的论坛软件 动网论坛官方技术讨论区 站长工具 申请属于您自己的免费论坛
首页 | 新闻资讯 | 网站运营 | 网络编程 | 数据库 | 服务器 | 网页设计 | 图像媒体 | 网络应用 | 搜索优化 | 资源下载 | 动网主机 | DVBOX
    本站内  互联网 ASP论坛  ASP.Net论坛  PHP论坛
  
   .Net → 阅读文章

 CustomValidator Web 控件

作者来源: 
阅读 1569 人次 , 2006-3-29 4:29:00 


如果我们所要处理的数据有上列数据验证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 正确的身分证号码。
 
 收藏本文  打印本文  论坛讨论  关闭窗口
· 上一篇:AdRotator Web 控件
· 下一篇:ValidationSummary Web 控件
· .Net边学边讲(二)
· VB.net 调用带参数存储过程
· 正弦函数的绘制的一种方法
· 列出asp+中所有request 的属性和数值
· ASP.NET虚拟主机的重大安全隐患(六)


关于本站 | 联系我们 | 业务合作 | 客户案例 | 诚聘英才 | 广告合作 | 收藏本站
海口动网先锋网络科技有限公司版权所有
Copyright © 2000 - 2006 Cndw.Com
中华人民共和国电信与信息服务业务经营许可证编号 琼 ICP 020077