【ASP.NET】验证控件-阿里云开发者社区

开发者社区> 开发与运维> 正文

【ASP.NET】验证控件

简介: <pre><span style="font-family:KaiTi_GB2312"><span style="font-size:18px; white-space:pre"> </span><span style="font-size:18px">在软件开发中,验证输入信息是否正确,这是必不可少的一项工作。就拿我们做过的机房收费系统来说,在登录的时候,我们需要对用户名和用户密码进行验
	在软件开发中,验证输入信息是否正确,这是必不可少的一项工作。就拿我们做过的机房收费系统来说,在登录的时候,我们需要对用户名和用户密码进行验证,判断是否为空,判断输入字符是否合理等等。这些工作,我们之前都需要编写一段又一段代码,依次进行验证。在ASP.NET中,学习到了验证控件,发现这些事情原来可以很容易就被解决的。
	这篇博客就将ASP.NET中5个验证控件总结一下,也是为了以后能够更加方便熟悉的使用它们。
(一)RequiredFieldValidator控件
	其功能是要求用户必须为ASP.NET网页上的某个指定控件提供信息,例如在登录界面下,要求用户名不能为空,此时就可以将该控件绑定到用户名文本框,当用户名为空时,该控件提示“用户名为空”的信息。
(二)CompareValidator控件
	其功能是验证某个输入控件里输入的信息是否满足实现设定的条件。例如在输入人的年龄时,输入的值必须大于0,此时就可以将该控件绑定到用于输入年龄文本框,并设置适当的条件来控制用户误输入小于0的数值。
(三)RangeValidator控件
	其功能是验证用户对某个文本框的输入是否在某个范围内,如输入的数值是否在某两个数值之间,输入的日期是否在某两个日期之间等。
(四)RegularExpressionValidator控件
	其功能是验证用户输入的数据是否符合规则表达式预定义的格式。如输入的数据是否符合身份证、电子邮件、电话号码等格式。规则表达式一般都是利用正则表达式来描述。
(五)CustomValidator控件
	其功能是能够调用程序开发人员在服务器端编写的自定义验证函数。
下面就以一个注册的实例,来对这些验证控件应用。
	前台是一个简单的用户注册页面,如下图:
		其中包含5个RequiredFieldVaildator控件验证每个文本框内容是否为空,一个RangeValidator控件验证输入年龄文本框内容是否在1-150之间,一个CompareValidator控件验证两次输入的密码是否一致,一个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="用户名:"></asp:Label>
 
            <asp:TextBox ID="TextBox6" runat="server"></asp:TextBox>
            <asp:RequiredFieldValidator ID="RequiredFieldValidator6" runat="server" ControlToValidate="TextBox6" ErrorMessage="用户名必填"></asp:RequiredFieldValidator>
        </p>
        <p>
            密码:   <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
            <asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ControlToValidate="TextBox2" ErrorMessage="密码必填"></asp:RequiredFieldValidator>
        </p>
        <p>
            重复密码:<asp:TextBox ID="TextBox3" runat="server"></asp:TextBox>
            <asp:RequiredFieldValidator ID="RequiredFieldValidator3" runat="server" ControlToValidate="TextBox3" ErrorMessage="重复密码必填"></asp:RequiredFieldValidator>
 
            <asp:CompareValidator ID="CompareValidator1" runat="server" ControlToCompare="TextBox2" ControlToValidate="TextBox3" ErrorMessage="两次密码输入不一致"></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>

	这样点击注册按钮后,如果各个文本框不符合要求,便会有相应的提示信息。但第一次运行就遇到错误了,


	很常见的一个错误,在网上搜了搜很快就得到了答案,那是因为WebForm使用UnobtrusiveValidationMode来验证,所以可以设定不要使用UnobtrusiveValidationMode,如下,在Page_Load中设定,

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

	这样前台就显示了,如果各个文本框什么都不输入,各个验证控件都会提示“**为必填”,如下图:
	
	除了判断文本框内容是否为空,其他验证控件同样会判断输入的对应的内容是否符合要求,不符合要求的,也会提示对应的信息,如下图:
		所有文本框的内容都按正确的形式填写的话,就便不会有任何出错信息提示了,如下图:
		通过这样一个实例,对这些验证控件的使用也就掌握了。以前我们对文本框的输入内容需要写大量的代码一步一步进行验证,而通过ASP.NET视频中验证控件的学习,将验证控件与文本框控件绑定,这样方便了我们很多,以后在编写程序的时候就可以考虑用上了,也算是站在巨人的肩膀上一点点提升。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

其他文章