驗證控制項測試使用者輸入,設定錯誤狀態,並產生錯誤訊息。它們不會更改頁的處理流程,例如,在偵測到使用者輸入錯誤時不會略過程式碼。取而代之的是,您將在執行應用程式的特定邏輯之前在程式碼中測試控制項的狀態。如果偵測到錯誤,您自己的程式碼將無法運作;頁將繼續處理並傳回給用戶,並向其顯示錯誤訊息。
安全說明: 預設情況下,ASP.NET 網頁會自動驗證是否有惡意使用者試圖傳送腳本或HTML 元素到您的應用程式。
您可以測試常規的頁範圍的狀態,並且可以測試單獨控制項的狀態。通常,您會在為頁建立的事件處理程序中完成上述工作。
一、測試常規錯誤狀態
在您的程式碼中,測試頁的IsValid 屬性。此屬性將累計頁上所有驗證控制項的IsValid 屬性的值(使用邏輯AND),如果有任何驗證控制項設為無效,頁的屬性都會傳回false。
說明: 驗證資訊在頁的初始化或載入階段不可用。但是,您可以在Page_Load 期間手動呼叫Validate 方法,然後測試頁的IsValid 屬性。
下面的程式碼範例示範按鈕的事件處理程序。該程式碼測試頁的IsValid 屬性。請注意,在此無需其他子句,原因是頁將自動返回瀏覽器,並且驗證控制項將顯示其自己的錯誤訊息。
void Button1_Click(object sender, System.EventArgs e)
{
if (IsValid)
{
// Perform database updates or other logic here.
}
}
二、測試單獨控制項的錯誤狀態
依序通過頁的Validators 集合,該集合包含所有驗證控制項的參考。您可以隨後檢查每個驗證控制項的IsValid 屬性。
說明: 如果希望在Page_Load 期間執行該檢查,則必須先手動呼叫Validate 方法。
下面的程式碼範例示範如何取得單一驗證控制項的狀態。
if (this.IsPostBack)
{
this.Validate();
if (!this.IsValid)
{
string msg = "";
// Loop through all validation controls to see which
// generated the errors.
foreach (IValidator aValidator in this.Validators)
{
if (!aValidator.IsValid)
{
msg += "<br />" + aValidator.ErrorMessage;
}
}
Label1.Text = msg;
}
}
本文出自CSDN博客,轉載請標示出處: http://blog.csdn.net/dodream/archive/2009/12/17/5024643.aspx
-