• 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="提交" onclick="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="提交" onclick="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="登录" onclick="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="注册" onclick="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="提交" onclick="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,那么验证摘要只显示在警告对话框中。

  • 相关阅读:
    Arrays工具类
    String字符串
    包装类
    程序员代码面试指南 IT名企算法与数据结构题目最优解
    【面试题】了解session和cookie吗?
    如何用STAR法则来回答「宝洁八大问」
    【算法面试】常见动态规划算法示例1-最长公共子串问题
    面试HashMap之追命5连问
    JAVA面试题(8)
    多线程面试题之原子性、可见性、有序性
  • 原文地址:https://www.cnblogs.com/luodao1991/p/2922809.html
Copyright © 2020-2023  润新知