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

【ASP.NET】验证控件

2016-01-03 12:33 447 查看
在软件开发中,验证输入信息是否正确,这是不可缺少的一项工作。就拿我们做过的机房收费系统来说,在登录的时候,我们须要对username和用户password进行验证。推断是否为空,推断输入字符是否合理等等。这些工作,我们之前都须要编写一段又一段代码,依次进行验证。

在ASP.NET中。学习到了验证控件,发现这些事情原来能够非常easy就被解决的。

这篇博客就将ASP.NET中5个验证控件总结一下。也是为了以后能够更加方便熟悉的使用它们。

(一)RequiredFieldValidator控件
其功能是要求用户必须为ASP.NET网页上的某个指定控件提供信息,比如在登录界面下,要求username不能为空,此时就能够将该控件绑定到username文本框,当username为空时,该控件提示“username为空”的信息。

(二)CompareValidator控件
其功能是验证某个输入控件里输入的信息是否满足实现设定的条件。比如在输入人的年龄时,输入的值必须大于0,此时就能够将该控件绑定到用于输入年龄文本框,并设置适当的条件来控制用户误输入小于0的数值。
(三)RangeValidator控件
其功能是验证用户对某个文本框的输入是否在某个范围内,如输入的数值是否在某两个数值之间,输入的日期是否在某两个日期之间等。
(四)RegularExpressionValidator控件
其功能是验证用户输入的数据是否符合规则表达式提前定义的格式。

如输入的数据是否符合身份证、电子邮件、电话号码等格式。规则表达式一般都是利用正則表達式来描写叙述。

(五)CustomValidator控件
其功能是能够调用程序开发者在server端编写的自己定义验证函数。
以下就以一个注冊的实例,来对这些验证控件应用。


前台是一个简单的用户注冊页面,例如以下图:



当中包括5个RequiredFieldVaildator控件验证每一个文本框内容是否为空。一个RangeValidator控件验证输入年龄文本框内容是否在1-150之间,一个CompareValidator控件验证两次输入的password是否一致。一个RegularExpressionValidator控件验证输入的电子邮件格式是否正确。

设置好各个控件的ErrorMessage、ControlToValidate等属性后。我们能够从源码中看到一个完整的HTML代码:


<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>

</div>
<p style="margin-left: 200px">
用户注冊</p>
<p>
<asp:Label ID="Label2" runat="server" Text="username:"></asp:Label>

<asp:TextBox ID="TextBox6" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator6" runat="server" ControlToValidate="TextBox6" ErrorMessage="username必填"></asp:RequiredFieldValidator>
</p>
<p>
password:   <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ControlToValidate="TextBox2" ErrorMessage="password必填"></asp:RequiredFieldValidator>
</p>
<p>
反复password:<asp:TextBox ID="TextBox3" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator3" runat="server" ControlToValidate="TextBox3" ErrorMessage="反复password必填"></asp:RequiredFieldValidator>

<asp:CompareValidator ID="CompareValidator1" runat="server" ControlToCompare="TextBox2" ControlToValidate="TextBox3" ErrorMessage="两次password输入不一致"></asp:CompareValidator>
</p>
<p>
年龄:   <asp:TextBox ID="TextBox4" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator4" runat="server" ControlToValidate="TextBox4" ErrorMessage="年龄必填"></asp:RequiredFieldValidator>

<asp:RangeValidator ID="RangeValidator1" runat="server" ControlToValidate="TextBox4" ErrorMessage="年龄必须大于0小于120!" MaximumValue="120" MinimumValue="1" Type="Integer"></asp:RangeValidator>
</p>
<p>
<asp:Label ID="Label1" runat="server" Text="电子邮件:"></asp:Label>
<asp:TextBox ID="TextBox5" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator5" runat="server" ControlToValidate="TextBox5" ErrorMessage="电子邮件必填"></asp:RequiredFieldValidator>
<asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" ControlToValidate="TextBox5" ErrorMessage="邮件格式输入错误" ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*"></asp:RegularExpressionValidator>
</p>
<p>

<asp:Button ID="Button1" runat="server" Text="注冊" />
</p>
</form>
</body>
</html>


这样点击注冊button后,假设各个文本框不符合要求,便会有对应的提示信息。但第一次执行就遇到错误了,




非经常见的一个错误。在网上搜了搜非常快就得到了答案,那是由于WebForm使用UnobtrusiveValidationMode来验证。所以能够设定不要使用UnobtrusiveValidationMode。例如以下,在Page_Load中设定,


protected void Page_Load(object sender, EventArgs e)
{
UnobtrusiveValidationMode = UnobtrusiveValidationMode.None;
}


这样前台就显示了,假设各个文本框什么都不输入。各个验证控件都会提示“**为必填”,例如以下图:


除了推断文本框内容是否为空,其它验证控件相同会推断输入的相应的内容是否符合要求,不符合要求的,也会提示相应的信息,例如以下图:



全部文本框的内容都按正确的形式填写的话。就便不会有不论什么出错信息提示了,例如以下图:



通过这样一个实例。对这些验证控件的使用也就掌握了。曾经我们对文本框的输入内容须要写大量的代码一步一步进行验证。而通过ASP.NET视频中验证控件的学习,将验证控件与文本框控件绑定,这样方便了我们非常多。以后在编敲代码的时候就能够考虑用上了,也算是站在巨人的肩膀上一点点提升。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: