NET开发-WebForm必填验证对TextBox控件的非空验证及属性的使用
1.概述
在ASP.NET Web应用程序中,对于网页上的验证,一般情况下都是在客户端使用JavaScript代码进行验证,但是对于初学者而言或基于微软的.NET开发者而言,对JavaScript代码并不熟悉,此时微软就为我们提供了一套ASP.NET验证控件。
这一套ASP.NET验证控件可以满足所有的标准数据验证,并且ASP.NET验证控件是双重验证的:客户端验证(JavaScript实现)和服务器端验证(C#代码实现),这样就不怕客户端脚本代码攻击了,保证了验证数据的准确性。
2.解决兼容性
注意:对于ASP.NET 4.5之前的版本,是可以直接使用ASP.NET验证控件的,但是对于ASP.NET 4.5及以后的版本,则可能会出现如下图的错误信息:
![](https://pics5.baidu.com/feed/2f738bd4b31c870141673d956870b4290608ff82.jpeg?token=0fca31644aea61af5c98aaea6548c52f&s=ED86ED13118B45491AC1E95802005070)
这是因为从ASP.NET 4.5版本开始,ASP.NET验证控件的客户端验证使用了UnobtrusiveValidationMode 模式(jQuery工具)来验证。
要解决此问题有多种办法,这里介绍两种简单的方法:
1) 在Visual Studio 2019中将ASP.NET目标框架修改为ASP.NET 4.0。
2) ASP.NET 4.5的情况下,在Page_Load()方法中编写如下代码:
protected void Page_Load(object sender, EventArgs e){UnobtrusiveValidationMode = UnobtrusiveValidationMode.None;}3) ASP.NET 4.5的情况下,或在Web.Config中的<configuration>节点下添加如下代码:
<appSettings><add key="ValidationSettings:UnobtrusiveValidationMode" value="None"/></appSettings>这三种办法都可以轻松的让你使用ASP.NET 验证控件。
3.验证控件的使用
ASP.NET WebForm中的所有验证控件都是存放在工具箱的“验证”类别中的。如下图所示:
![](https://pics3.baidu.com/feed/503d269759ee3d6dcbb9ac7a0d1947244f4ade1d.jpeg?token=c5a9b91fd6f96605ffebfd65a8d1e116&s=89E2D30657B5926854FDFC050000E0C0)
在上图中,可以看到WebForm中总共有6个验证控件。
4.RequiredFieldValidator控件
在ASP.NET WebForm中,RequiredFieldValidator控件是非空(或必填)验证控件,用于验证文本框值的必须性。
4.1. ControlToValidate属性
在RequiredFieldValidator控件中,使用ControlToValidate属性来与TextBox控件的ID值绑定。这样可以对TextBox文本框实现非空验证。需要执行一下“提交”按钮才可实施验证。
Html代码如下:
![](https://pics5.baidu.com/feed/f636afc379310a555e4b7ee0f94a69af82261048.jpeg?token=dec5ab56ea28eb659fb8a28a9c9b9eda&s=C1E1B34613F992694C54600E0000F0C0)
使用ControlToValidate建立绑定关系之后,该必填验证控件就会验证TextBox控件的必填性。
运行一下结果,如下图所示:
![](https://pics7.baidu.com/feed/5243fbf2b211931347c23dfc283726d190238d8b.jpeg?token=2cecec92759a6f85f8d3ad1ea73b7534&s=59201C7213324920487591DA0000E0B3)
在上图中单击一下“提交”按钮,效果如下图所示:
![](https://pics5.baidu.com/feed/8718367adab44aed72ebb77cfe13ad07a08bfb92.jpeg?token=e887e2512fd07328632b8a41552bc5af&s=59223C72010B5D43527801CE0000B0B2)
在上图中出现的“RequiredFieldValidator”是验证未通过时出现的提示信息。是ErrorMessage属性指定的值。
4.2. ErrorMessage属性
RequiredFieldValidator中的ErrorMessage属性用于在验证没有通过时出现的验证错误信息。
对于RequiredFieldValidator验证控件,默认的错误信息是:“RequiredFieldValidator”。现在修改一下:
<html><head runat="server"><meta http-equiv="Content-Type" content="text/html; charset=utf-8"/><title>RequiredFieldValidator验证控件</title></head><body><form id="form1" runat="server"><div><asp:TextBox ID="TextBox1" runat="server"></asp:TextBox><asp:RequiredFieldValidator ID="RequiredFieldValidator1" ControlToValidate="TextBox1" runat="server"ErrorMessage="用户名必填。"></asp:RequiredFieldValidator><asp:Button ID="Button1" runat="server" Text="提交" /></div></form></body></html>在上面的Html代码中,将ErrorMessage属性的值修改为“用户名必填。”。运行一下结果,如下图所示:
![](https://pics7.baidu.com/feed/63d9f2d3572c11df2eafa3fc2d2848d6f603c28c.jpeg?token=8275c874a3af0268ab55132f17729354&s=49A83D72171A54635A7D40DA0000E0B3)
当文本框的值为空时,单击“提交”按钮,则会出现错误信息,如果输入内容,则错误信息会消失,验证通过。如下图所示:
![](https://pics1.baidu.com/feed/63d0f703918fa0ecb71ea8b16b9873e83c6ddb43.jpeg?token=39be2b7b425dceb4f11c476811d28077&s=99A05C328B7854030A78D4DE0000A0B3)
当验证通过之后,就会向服务器提交数据,并执行“提交”按钮的事件代码。
4.3. Display属性
在上图我们发现,文本框和按钮之间有一些空白,这个空白区域就是验证控件所占的位置。使用Display属性可以设置验证控件的显示行为,默认值为Static,静态的,验证提示信息占有一定的固定位置。
Display属性的值如下说明:
1) Static:默认值,静态的,会为验证信息占一定的位置空间。
2) None:验证信息不显示。
3) Dynamic:动态的分配验证信息所占空间,当没有错误信息显示时,不占用空间,显示时才占用空间。
4.4. EnableClientScript属性
EnableClientScript属性用于设置验证控件是否启用客户端验证:
EnableClientScript=”true”启用客户端验证,默认值。
EnableClientScript=”false”禁用客户端验证。
如果禁用了客户端验证,则在C#代码中需要使用如下代码来判断是否通过验证:
if (this.Page.IsValid)//验证通过{Response.Write("你好");}4.5. Text属性
Text属性用来获取或设置验证失败时验证控件中显示的文本。
ErrorMessage属性用来获取或设置验证失败时 System.Web.UI.WebControls.ValidationSummary 控件中显示的错误消息的文本。
如果页面上没有ValidationSummary控件,则ErrorMessage和Text属性的作用一样。