ASP.net验证控件详解和按钮点击事件后验证控件的执行顺序问题以及在确认密码框为空,CompareValidator认为是合法的问题的解决方案

完全手写,难免有错误,大家拣自己需要的看一下。博主我也不能误人子弟,大家多提些修改和参考意见啊。


ASP.NET提供了6个验证控件如下:

1.CompareValidator 

将输入控件的值同常数值或其他输入控件的值相比较,由比较运算符指定的关系相匹配

2.RangeValidator

检查用户的输入是否在一个特定的范围内

3.RegularExpressionValidator

检查用户的输入是否与正则表达式所定义的模式匹配

4.RequiredFieldValidator

检查用户是否在输入控件中输入了数据

5.CustomValidator

通过用户自定义函数判定输入的数据是否有效

6.ValidationSummary

显示页面上所有验证控件所搜索到的验证错误


主要属性:

1.ControlToValidate

指定需要验证的控件名

2.Enabled

指定是否启用验证控件,默认是true

3.ErrorMessage

当验证失败是在ValidationSummary控件中显示的错误信息

4.ForeColor

指定当验证失败是用于显示内敛消息的颜色

5.IsValid

返回ControlToValidate属性所指定的输入控件是否通过验证,通过为true,该属性只能在编程中使用(这个很重要)

6.Text

若设置该属性,验证失败是显示Text属性定义的信息,如果没有设置该属性,则显示ErrorMessage属性定义的信息



RequiredFieldValidator

用于用户必须填写某个表单的输入元素,例如学号,密码等。

HTML代码:

<asp:RequiredFieldValidtor runat="server" ID="RequiredFieldValitor1" ControlToValidate="" InitalValue="" Text="" ErrorMessage="">

</asp:RequiredFieldValidator>

这里的initalvalue是此控件的特有属性,指定被验证控件的初始值。当InitalValue属性值为空字符时,表明必须在输入空间中输入值,才能通过验证。

例子:(这里我就只做用户名的验证,密码的验证类似)

<head><title>用户登录</title></head>
<label>用户名:</label>
<asp:TextBox ID="TBName" runat="server" Text="username">
</asp:TextBox>
<asp:RequiredFieldValidator ID="RFVName" runat="server"ControlToValidate="TBName" ErrorMessage="请输入用户名" InitalValue="username"></asp;RequiredFieldValidator>

CompareValidator

用于将输入控件的值与指定的值比较

<asp:CompareValidator runat="server" ID="CompareValidator1"ControlToValidate=""ControlToCompare="" Type="{Currency,Date,String,Double,Integer}" Oprator="{Equal,Not Equal,GreaterThan,GreatThanEqual,LessThan,LessThanEqual,DataTypeCheck}" Text="" ErrorMessage="">

<asp:CompareValidator>

这里有些同学就要疑惑了,controltovalidate和controltocompare有啥关系,有啥区别呢。至于Type和Operator属性大家都应该看得懂,就不作赘述了。

ControlToCompare是用来获取或设置与ControlValidate属性所指定的控件进行比较的控件的标识。(有点拗口,不懂得看下面的例子就知道了。)

其实此控件还有一个特有属性是ValueToCompare,这个是用来获取或设置用来比较的常量。

通常情况下ControlToCompare和ValueToCompare两者不会同时设置。若同时设置前者优先。

例子:

<label>年龄</label>
<asp:TextBox runat="server"ID="TBAge"></asp:TextBox>
<asp:CompareValidator ID="CompareValidator1" runat="server" ControlValidate="TBAge" ValueToCompare="120"ErrorMessage="年龄不能超过120岁" Operator="LessThan">
</asp:CompareValidator>
<label>总收入</label>
<asp:TextBox runat="server"ID="TBTotal"></asp:TextBox>
<label>工资收入</label>
<asp:TextBox runat="server"ID="TBPay"></asp:TextBox>
<asp:CompareValdator ID="CompareValidator2"ControlToValdate="TBPay" ControlToCompare="TBTotal" ErrorMessage="工资收入不能大于总收入" Operator="LessThanEqual">
</asp:CompareValdator>


RangeValidator(这个比较简单不作详细简述)

属性:

MinimumValue  用于指定有效范围的最小值

MaximumValue  用于指定有效范围的最大值

Type          用于指定要比较的值得数据类型

同样要用到的是ControlToValidate



RegularExpressionValidator(一般用于验证邮箱或者电话号码等)

属性:

ValidationExpression   用于获取或设置用户的输入数据必须符合的形式

同样要用到的是ControlToValidate


至于用法要涉及到正则表达式,有些复杂,这里就不作赘述了。有兴趣的同学可以先学习一下正则表达式。


剩下的关于CustomValidator和ValidationSummart控件这里不做详解,前者要视具体情况而定,后者在调试的时候用的比较多。


后记:

最近自己也做了一个在线学习的系统,注册的页面就用到了这些验证控件。但是遇到了两个问题:

1.前台和后台已经部署好了,但是当点击注册按钮的时候,不光是验证控件执行了,同时竟然先运行了后台的按钮的Onclick事件!


按理说,验证控件实在客户端执行的,也就是说肯定是先执行的验证控件,进行检查输入是否正确,然后检查无误都正确之后,再执行后台的添加数据到数据库中的操作


百般调试,单独把验证控件代码删掉,保留后台代码。或者把后台代码隐藏,保留验证控件代码都是可以正确运行的,为什么会这样的,最后才知道,自己竟然粗心到没有意识到isValid这个属性的重要性


在后台加了一句if(Page.isValid==true)的语句就可以了,唉,知道和会用还真的是两码事情,看来还是得努力学习啊。


2.还有一个就是用户注册的时候,输入一次密码后,在确认密码框里啥都不输,CompareValidator居然也认为是合法的。

百度了好久,也没找到一个很好的解决方案,要么说用js,要么就是在下面再加上一个RequiredFieldValidator控件。

大家如果有什么更好地解决方案,欢迎告诉我,让我学习一下。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值