ASP.NET验证控件详解

验证控件

1ASP.NET中包含6个验证控件

RequiredFieldValidator--------用于要求用户填写表单时必须输入的值,如果用户没有填写提示:不能为空

RangeValidator---用于检测一个值是否在确定的最大值和最小值之间

CompareValidator----用于比较一个值和另一个值或者数据类型的检测

RegularExpressionValidator----用于比较一个值和正则表达式

CustomValidator----用于执行自定义验证

ValidationSummary----用于在页面显示所有验证错误的摘要

2、 验证控件可以关联到任何一个ASP.NET中的表单控件,比如说希望要求用户向TextBox控件输入一个值,可以将一个RequiredFieldValidator控件关联到这个TextBox控件。

方法是设置RequiredFieldValidatorControlToValidate属性为关联控件的ID 

<asp:RequiredFieldValidator ID="rfvProductName" runat="server" Text="(不?能ü为a空?)" ControlToValidate="txtProductName"></asp:RequiredFieldValidator>

 实例1:使用RequiredFieldValidator和CompareValidator验证控件

页面:RequiredFieldValidator.aspx 关键代码

 <form id="form1" runat="server">

    <div>

    <fieldset>

    <legend>订单窗口</legend>

    <asp:Label ID="lblProductName" runat="server" Text="货物名称" AssociatedControlID="txtProductName"></asp:Label>

    <asp:TextBox ID="txtProductName" runat="server"></asp:TextBox>

    <asp:RequiredFieldValidator ID="rfvProductName" runat="server" Text="(不能为空)" ControlToValidate="txtProductName"></asp:RequiredFieldValidator>

    <br /><br />

    <asp:Label ID="lblProductPrice" runat="server" Text="货物价格" AssociatedControlID="txtProductPrice"></asp:Label>

    <asp:TextBox ID="txtProductPrice" runat="server"></asp:TextBox>

    <asp:RequiredFieldValidator ID="rfvProductPrice" runat="server" Text="(不能为空)" ControlToValidate="txtProductPrice"></asp:RequiredFieldValidator>

    <asp:CompareValidator ID="cvProductPrice" runat="server" Text="(请输入货币符号)" Operator="DataTypeCheck" Type="Currency" ControlToValidate="txtProductPrice"></asp:CompareValidator>

    <br /><br />

    <asp:Label ID="lblProductQuantity" runat="server" Text="货物数量" AssociatedControlID="txtProductQuantity"></asp:Label>

    <asp:TextBox ID="txtProductQuantity" runat="server"></asp:TextBox>

    <asp:RequiredFieldValidator ID="rfvProductQuantity" runat="server" Text="(不能为空)" ControlToValidate="txtProductQuantity"></asp:RequiredFieldValidator>

    <asp:CompareValidator ID="cvProductQuantity" runat="server" Text="(必须输入整数)" Operator="DataTypeCheck" Type="Integer" ControlToValidate="txtProductQuantity"></asp:CompareValidator>

    <br /><br />

    <asp:Button ID="btnSubmit" runat="server" Text="提交" οnclick="btnSubmit_Click" />

    </fieldset>

    <asp:Label ID="lblResult" runat="server"></asp:Label>

    </div>

</form>

后台RequiredValidator.aspx.cs关键代码

 protected void btnSubmit_Click(object sender, EventArgs e)

    {

        if (Page.IsValid)

        {

            lblResult.Text = @"货物名称是:" + txtProductName.Text + "<br />" + "货物价格是:" + txtProductPrice.Text + "<br />" + "货物数量是:" + txtProductQuantity.Text;

        }

    }

注意:CompareValidator控件的关键属性: ControlToValidator属性为验证关联的控件ID Operator属性设置为DataTypeCheck Type枚举有Integer

3、使用Page.IsValid

     处理含有验证控件的表单数据提交,需要检测Page.IsValid属性。每一个验证控件都是包含一个IsValid属性,如果没有验证错误,这个属性返回True。如果页面中所有验证控件的IsValid属性都返回True,那么Page.IsValid属性返回True

4、设置Display属性

     所有的验证控件都含有Display属性,用来决定如何呈现验证错误信息。该属性有三个枚举值:

1、Static

2、Dynamic

3、None

5、突出显示验证错误

验证控件显示验证错误设置的是它的Text属性值

实例:设置Text值为一张图片 Text=”<img src=’~’  alt=”string” />”  所以当TextBox输入错误时显示的错误信息是一张图片

<asp:Label ID="lblName" runat="server" Text="姓名" AssociatedControlID="txtName"></asp:Label>

    <asp:TextBox ID="txtName" runat="server"></asp:TextBox>

    <asp:RequiredFieldValidator ID="rfvName" runat="server" Display="Dynamic" ControlToValidate="txtName" Text="<img src='文字1.png' alt='错误信息' height='20' width='20' />"></asp:RequiredFieldValidator>

    <asp:Button ID="btnSubmit" runat="server" Text="提交" οnclick="btnSubmit_Click" />

    <br />

<asp:Label ID="lblShow" runat="server"></asp:Label>

    6、强调错误的另一种方式是设置验证控件的SetFocusOnErrorTrue,当存在验证错误时,表单焦点会自动移到该验证控件所关联的控件上。默认情况下是False.

    7、使用验证组

如果想创建一个同时包含登录和注册表单的页面,登录表单放在左栏,注册表单放在右栏。两个表单都包含验证控件。并且要求两个表单验证不相互干扰。这样就用到了验证组的概念。验证组用于把先关联的表单字段组合在一起。不受别的表单干扰。

要想使用验证组需要在设置一组验证控件和Buttont提交控件的属性ValidationGroup为相同值.

实例:一个页面同时可以同时验证登录界面和注册界面

 ValidationGroup.aspx页面关键代码

 <form id="form1" runat="server">

    <div class="column">

    <fieldset>

    <legend>登录</legend>

    <p>如果您已经有账户,请直接登录</p>

    <asp:Label ID="lblLoginName" runat="server" Text="用户" AssociatedControlID="txtLoginName" ></asp:Label>

    <asp:TextBox ID="txtLoginName" runat="server" Width="100px"></asp:TextBox>

    <asp:RequiredFieldValidator ID="rfvLoginName" runat="server" ControlToValidate="txtLoginName" Text="用户不为空" ValidationGroup="LoginGroup" SetFocusOnError="true"></asp:RequiredFieldValidator>

    <br /><br />

    <asp:Label ID="lblLoginPassword" runat="server" Text="密码" AssociatedControlID="txtLoginPassword"></asp:Label>

    <asp:TextBox ID ="txtLoginPassword" runat="server" TextMode="Password" Width="100px"></asp:TextBox>

    <asp:RequiredFieldValidator ID="rfvLoginPassword" runat="server" ControlToValidate="txtLoginPassword" Text="密码不为空" ValidationGroup="LoginGroup" SetFocusOnError="true"></asp:RequiredFieldValidator>

    <br /><br />

    <asp:Button ID="btnLogin" runat="server" Text="登录" οnclick="btnLogin_Click" ValidationGroup="LoginGroup" />

    <br />

    <asp:Label ID="lblLoginResult" runat="server"></asp:Label>

    </fieldset>

    </div>

 

     <div class="column">

    <fieldset>

    <legend>注册</legend>

    <p>如果您现在还没账户,请先注册</p>

    <asp:Label ID="lblRegisterName" runat="server" Text="用户" AssociatedControlID="txtRegisterName"></asp:Label>

    <asp:TextBox ID="txtRegisterName" runat="server" Width="100px"></asp:TextBox>

    <asp:RequiredFieldValidator ID="rfvRegisterName" runat="server" ControlToValidate="txtRegisterName" Text="用户不能为空" ValidationGroup="RegisterGroup" SetFocusOnError="true"></asp:RequiredFieldValidator>

    <br /><br />

    <asp:Label ID="lblRegisterPassword" runat="server" Text="密码" AssociatedControlID="txtRegisterPassword"></asp:Label>

    <asp:TextBox ID ="txtRegisterPassword" runat="server" TextMode="Password" Width="100px"></asp:TextBox>

    <asp:RequiredFieldValidator ID="rfvRegisterPassword" runat="server" ControlToValidate="txtRegisterPassword" Text="密码不能为空" ValidationGroup="RegisterGroup" SetFocusOnError="true"></asp:RequiredFieldValidator>

    <br /><br />

    <asp:Button ID="btnRegister" runat="server" Text="注册" οnclick="btnRegister_Click" ValidationGroup="RegisterGroup" />

    <br />

    <asp:Label ID="lblRegisterResult" runat="server"></asp:Label>

    </fieldset>

    </div>

    </form>

ValidationGroup.aspx.cs关键代码

 protected void btnLogin_Click(object sender, EventArgs e)

    {

        if (Page.IsValid)

        {

            lblLoginResult.Text ="登录用户:"+txtLoginName.Text+"<br />"+"登录密码:"+txtLoginPassword.Text;

        }

    }

    protected void btnRegister_Click(object sender, EventArgs e)

    {

        if (Page.IsValid)

        {

            lblRegisterResult.Text ="注册用户:"+txtRegisterName.Text+"<br />"+"注册密码:"+txtRegisterPassword.Text;

        }

    }

   8、禁用验证

所有的按钮控件---Button控件、LinkButton控件和ImageButton控件都有CausesValidation属性。如果赋值False给该属性,那么点击这个按钮就会绕过页面中所有的验证。

绕过验证对取消按钮很有用。

实例:页面中有一个取消按钮,用于把用户重定向回Default.aspx页面 设置了取消的Button控件的CausesValidation=”false”

9、使用RequiredFieldValidator控件

RequiredFieldValidator控件用于要求用户在提交表单前为表单字段输入值。使用此控件必须设置两个重要的属性。

ControlToValidate--被验证的表单字段的ID

Text---验证失败时显示的错误信息

SetFocusOnError---当为True时验证失败自动跳转到被验证控件上。

 

 

   10、使用CompareValidator控件

CompareValidator控件可用于执行三种不同类型的验证任务。

1、执行数据类型检测

2、输入表单字段的值和一个固定值之间进行比较

3、比较一个表单字段的值和另一个表单字段的值。如检测输入的会议开始日期是否小于输入的会议结束日期值

 CompareValidator控件的6个重要属性

 ControlToValidate---被验证的表单字段的ID

 Text---验证失败时显示的错误信息

 Operator---所执行的比较类型,可以是Date,String,Double,Currency,Integer

 Type---比较的数据类型,可以是StringDate,Double,Currency,Integer

 ControlToCompare---所比较的控件的ID

 

<fieldset>

    <legend>会议记录</legend>

    <asp:Label ID="lblStartDate" runat="server" Text="会议开始日期"></asp:Label>

    <asp:TextBox ID="txtStartDate" runat="server"></asp:TextBox>

    <br />

    <asp:Label ID="lblEndDate" runat="server" Text="会议结束日期"></asp:Label>

    <asp:TextBox ID="txtEndDate" runat="server"></asp:TextBox>

    <asp:CompareValidator ID="cvDate" runat="server" Text="会议结束日期必须要比会议开始日期大" ControlToValidate="txtEndDate" ControlToCompare="txtStartDate" Operator="GreaterThan" Type="Date"></asp:CompareValidator>

    <br />

    <asp:Button ID="btnSubmit" runat="server" Text="提交" οnclick="btnSubmit_Click" />

    </fieldset>

    </div>

</form>

     11、使用ValidationSummary控件

ValidationSummary控件用于在页面中显示所有的验证错误列表

验证控件显示错误信息使用Text属性,而如果要使用ValidationSummary控件显示错误列表则在验证控件中使用ErrorMessage属性。

实例:

<script runat="server">

    protected void btnSubmit_Click(Object sender, EventArgs e)

    {

        if (Page.IsValid)

        {

            lblResult.Text = "登录成功"; 

        }

    }

</script>

<html xmlns="http://www.w3.org/1999/xhtml">

<head runat="server">

    <title></title>

</head>

<body>

    <form id="form1" runat="server">

    <div>

    <fieldset>

    <legend>ValidationSummary使用</legend>

    <asp:ValidationSummary ID="vsContent" runat="server" HeaderText="错误信息" />

    <asp:Label ID="lblName" runat="server" Text="用户"></asp:Label>

    <asp:TextBox ID="txtName" runat="server" ></asp:TextBox>

    <asp:RequiredFieldValidator ID="rfvName" runat="server" ErrorMessage="用户必填!" ControlToValidate="txtName"></asp:RequiredFieldValidator>

    <br />

    <asp:Button ID="btnSubmit" runat="server" Text="测试" OnClick="btnSubmit_Click" />

    <asp:Label ID="lblResult" runat="server"></asp:Label>

    </fieldset>

    </div>

    </form>

</body>

</html>

使用ValidationSummary控件错误信息既会显示在页面中又会显示在ValidationSummary控件中。

ValidationSummary控件支持下列属性

DisplayMode---用于指定如何格式化错误信息

HeaderText---用于在验证摘要上方显示标题文本

ShowMessagebox--用于显示一个弹出警告对话框 如果值为True

ShowSummary---用于隐藏页面中的验证摘要 如果值为True

注意:如果把ValidationSummary控件的ShowMessageBox属性设为True,并把ShowSummary属性设为False,RequiredFieldValidator控件的Display设为None,那么验证摘要只显示在警告对话框中。

转载于:https://www.cnblogs.com/luodao1991/archive/2013/02/22/2922809.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值