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及以后的版本,則可能會出現如下圖的錯誤信息:

這是因為從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中的所有驗證控件都是存放在工具箱的“驗證”類別中的。如下圖所示:

在上圖中,可以看到WebForm中總共有6個驗證控件。
4.RequiredFieldValidator控件
在ASP.NET WebForm中,RequiredFieldValidator控件是非空(或必填)驗證控件,用於驗證文本框值的必須性。
4.1. ControlToValidate屬性
在RequiredFieldValidator控件中,使用ControlToValidate屬性來與TextBox控件的ID值綁定。這樣可以對TextBox文本框實現非空驗證。需要執行一下“提交”按鈕才可實施驗證。
Html代碼如下:

使用ControlToValidate建立綁定關系之后,該必填驗證控件就會驗證TextBox控件的必填性。
運行一下結果,如下圖所示:

在上圖中單擊一下“提交”按鈕,效果如下圖所示:

在上圖中出現的“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屬性的值修改為“用戶名必填。”。運行一下結果,如下圖所示:

當文本框的值為空時,單擊“提交”按鈕,則會出現錯誤信息,如果輸入內容,則錯誤信息會消失,驗證通過。如下圖所示:

當驗證通過之后,就會向服務器提交數據,並執行“提交”按鈕的事件代碼。
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屬性的作用一樣。