HOW TO:以程式的方式測試 ASP.NET 伺服器控制項的有效性
更新:2007 年 11 月
驗證控制項會測試使用者的輸入、設定錯誤狀態並產生錯誤訊息。它們不會改變網頁處理的流程 — 例如,當它們偵測到使用者輸入錯誤時不會略過您的程式碼。而是您必須在執行應用程式專屬邏輯前,在程式碼中測試控制項的狀態。如果偵測到錯誤,則您必須防止程式碼執行;網頁會繼續處理並將錯誤訊息傳回給使用者。
安全性注意事項: |
---|
根據預設,ASP.NET Web 網頁會自動進行驗證,檢查惡意的使用者是否正試圖將指令碼或 HTML 項目傳送到您的應用程式。如需詳細資訊,請參閱指令碼攻擊概觀。 |
您可測試一般性的整個網頁狀態,也可測試個別控制項的狀態。通常您會在為網頁所建立的事件處理常式中執行這些工作。
若要測試一般性錯誤狀態
在您的程式碼中,測試網頁的 IsValid 屬性 (Property)。此屬性包含網頁中所有驗證控制項的 IsValid 屬性值 (使用邏輯 AND),如果任一驗證控制項設為無效,網頁的屬性將傳回 false。
注意事項: 在網頁初始化或載入階段期間,無法使用驗證資訊。不過,您可以在 Page_Load 期間手動呼叫 Validate 方法,然後測試網頁的 IsValid 屬性。如需網頁狀態的詳細資訊,請參閱 ASP.NET 網頁存留週期概觀。
下列程式碼範例會顯示按鈕的事件處理常式。程式碼會測試網頁的 IsValid 屬性。請注意,在此並不需要 Else 子句,因為網頁將被自動傳回給瀏覽器,而驗證控制項將顯示自己的錯誤訊息。
Public Sub Button1_Click(ByVal sender As Object, _ ByVal e As System.EventArgs) _ Handles Button1.Click If Me.IsValid Then ' Perform database updates or other logic here End If End Sub
void Button1_Click(object sender, System.EventArgs e) { if (IsValid) { // Perform database updates or other logic here. } }
若要測試個別控制項的錯誤狀態
重複網頁的 Validators 集合,它包含所有驗證控制項的參考。接著您可以檢查每個驗證控制項的 IsValid 屬性。
注意事項: 如果要在 Page_Load 期間執行這項檢查,您必須先手動呼叫 Validate 方法。
下列程式碼範例會顯示如何取得個別驗證控制項的狀態。
If (Me.IsPostBack) Then Me.Validate() If (Not Me.IsValid) Then Dim msg As String ' Loop through all validation controls to see which ' generated the error(s). Dim oValidator As IValidator For Each oValidator In Validators If oValidator.IsValid = False Then msg = msg & "<br />" & oValidator.ErrorMessage End If Next Label1.Text = msg End If End If
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; } }
請參閱
工作
HOW TO:控制 ASP.NET 伺服器控制項的驗證錯誤訊息顯示
HOW TO:以程式的方式驗證 ASP.NET 伺服器控制項