您的位置:首页 > 编程语言 > ASP

ASP.NET验证控件详解

2013-02-22 19:19 525 查看
验证控件

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

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

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

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

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

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

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

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

方法是设置RequiredFieldValidator的ControlToValidate属性为关联控件的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、强调错误的另一种方式是设置验证控件的SetFocusOnError为True,当存在验证错误时,表单焦点会自动移到该验证控件所关联的控件上。默认情况下是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---比较的数据类型,可以是String,Date,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,那么验证摘要只显示在警告对话框中。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: