預設情況下,在頁面回傳到伺服器時、頁初始化之後(即視圖狀態和回發資料已處理之後)和呼叫事件處理程式碼之前,ASP.NET 驗證控制項會自動執行驗證。如果瀏覽器支援客戶端腳本,控制項也可以在瀏覽器中執行驗證。
但是,有時您可能需要以程式設計方式執行驗證。在以下情況下,您可能需要透過程式設計來進行驗證:
·如果驗證值在運作時尚未設定。例如,如果您正在使用RangeValidator 控件,您可能需要根據使用者輸入的值在運行時設定其MinimumValue 和MaximumValue 屬性。此時預設的驗證不起作用,因為當頁呼叫驗證控制項執行驗證時,RangeValidator 控制項中沒有足夠的資訊。
·需要確定Page_Load 事件處理程序中的控制項(或整頁)的有效性。在頁的處理階段,驗證控制項尚未調用,因此頁或單獨控制項的IsValid 屬性也未設定。 (如果試圖取得該屬性的值,將引發異常。)但如果要確定有效性,您可以以程式方式呼叫驗證。
·您正在執行時編輯控制項(或輸入控制項或驗證控制項)。
更常見的是,您可以在需要的時候隨時透過程式設計進行驗證,以便在驗證執行時進行更精確的控制。
呼叫驗證控制項的Validate 方法。
此控制項將執行檢查並設定控制項和頁的IsValid 屬性。如果偵測到錯誤,那麼當頁返回使用者時,將照常顯示錯誤訊息。
下面的程式碼範例示範如何以程式設計方式設定屬性。在這種情況下,一個ASP.NET 網頁在度假地預訂房間,以便在每次訪問時提供自由的往返。使用者必須輸入到達日期和離去日期,然後計劃訪問期間的日程。 RangeValidator 控制項用於確保使用者輸入典型的日期格式,旅行日期應該介於到達和離去日期之間。
說明: 如果使用者輸入的值無法轉換為日期,驗證程式控制項將引發異常。為清楚起見,此範例未包含錯誤處理部分。
到達和離去日期來自於頁上的兩個TextBox Web 伺服器控件,即txtArrival 和txtDeparture。旅行日期輸入到第三個TextBox 控制項中,即txtTourDate,該控制項由RangeValidator 控制項進行驗證。
說明: 用程式設計方式進行驗證時,應該停用客戶端腳本,以便控制項不會在您的伺服器端驗證程式碼執行之前顯示不正確的錯誤訊息。
private void Button1_Click(object sender, System.EventArgs e)
{
RangeValidator1.MinimumValue = txtArrival.Text;
RangeValidator1.MaximumValue = txtDeparture.Text;
RangeValidator1.Type = ValidationDataType.Date;
RangeValidator1.Validate();
if (!RangeValidator1.IsValid)
{
RangeValidator1.ErrorMessage = "The tour date must " +
"fall between the arrival and departure dates.";
}
}
本文來自CSDN博客,轉載請標示出處:
http://blog.csdn.net/dodream/archive/2009/12/17/5024666.aspx