共用方式為


驗證 ASP.NET Web 網頁中的使用者輸入

更新:2007 年 11 月

您可使用驗證控制項將輸入驗證加入至 ASP.NET Web 網頁。驗證控制項提供一種易用的機制來進行所有通用類型的標準驗證;例如,測試有效日期或某個範圍內的值,並提供自行撰寫驗證的方法。此外,驗證控制項允許您自訂如何顯示錯誤訊息。

驗證控制項能夠搭配放置於 ASP.NET Web 網頁上的任何控制項使用,同時包含 HTML 和 Web 伺服器控制項。如需詳細資訊,請參閱 ASP.NET Web 伺服器控制項概觀

安全性注意事項:

根據預設,ASP.NET Web 網頁會自動檢查潛在的惡意輸入。如需詳細資訊,請參閱指令碼攻擊概觀

使用驗證控制項

您可將驗證控制項加入至網頁 (就像加入其他伺服器控制項一樣) 來啟用使用者輸入的驗證。現有多種適用於不同驗證型別的控制項,例如範圍檢查或樣式比對。如需完整的驗證類型清單,請參閱 ASP.NET 伺服器控制項的驗證類型。每個驗證控制項都會參考網頁其他地方的輸入控制項 (伺服器控制項)。當處理使用者輸入時 (例如,當送出網頁時),驗證控制項會測試使用者輸入,並且設定屬性指示項目是否通過測試。在呼叫所有的驗證控制項後,就會設定網頁上的屬性,指示是否有任何驗證檢查失敗。

驗證控制項可以關聯至驗證群組,以便讓屬於公用群組的驗證控制項可以同時進行驗證。您可以使用驗證群組,選擇性地啟用或停用網頁上相關控制項的驗證。其他像是顯示 ValidationSummary 控制項或呼叫 GetValidators 方法的驗證作業可以參考驗證群組。

您可在自己的程式碼中測試網頁和個別控制項的狀態。例如,您可在以使用者輸入的資訊更新記錄前,測試驗證控制項的狀態。當您偵測到無效的狀態,即略過更新。通常,如果任何驗證檢查失敗,將略過所有自行處理部分並將網頁傳回給使用者。接著偵測到錯誤的驗證控制項會在網頁上顯示錯誤訊息。您可以使用 ValidationSummary 控制項將所有驗證錯誤顯示在一起。

注意事項:

更新、插入和刪除資料的資料繫結控制項,例如 GridViewFormViewDetailsView 控制項,會在執行資料更新作業之前自動檢查是否通過驗證檢查。

驗證何時發生

驗證控制項在伺服端程式碼中執行輸入檢查。當使用者將網頁送出至伺服器時,每個驗證控制項就會被依序叫用來檢查使用者的輸入。如果在任何輸入控制項中偵測到驗證錯誤,網頁本身就會設定為無效狀態,使您可以在程式碼執行前測試有效性。驗證在網頁初始化後發生 (也就是說,在處理了檢視狀態和回傳資料以後),但在呼叫任何變更或點擊事件處理常式之前。

當使用者使用支援 ECMAScript (Javascript) 的瀏覽器時,驗證控制項也可以使用用戶端指令碼執行驗證。因為只要使用者離開包含錯誤的控制項,就會立即偵測出錯誤並隨即顯示錯誤訊息,所以這種方式可以改進網頁的回應時間。如果可使用用戶端驗證,您便對錯誤訊息的配置具有較大的控制權,並可在訊息方塊中顯示錯誤摘要。如需詳細資訊,請參閱 ASP.NET 伺服器控制項的用戶端驗證

即使在用戶端已執行了驗證控制項,ASP.NET 仍會在伺服器上執行驗證,因此您可在伺服器端事件處理常式中測試有效性。此外,在伺服器上重新測試可以停用或變更用戶端指令碼,有助於防止使用者略過驗證。

您可以呼叫驗證控制項的 Validate 方法,在自己的程式碼中叫用驗證。如需詳細資訊,請參閱 HOW TO:以程式的方式驗證 ASP.NET 伺服器控制項

驗證多個條件

每個驗證控制項一般都會執行一項測試。然而,您可能會想要檢查多個條件。例如,您可能想要指定必要的使用者輸入,並將其限制為只接受特定範圍內的日期。

您可將多個驗證控制項附加至網頁上的輸入控制項。在這種情況下,就會使用邏輯 AND 運算子解析控制項執行的測試,表示使用者輸入的資料必須通過所有測試才能視為有效。

在某些情況下,可能會有多種不同格式的有效項目。例如,當提示輸入電話號碼時,您可以允許使用者輸入本地號碼、長途電話號碼或國際電話號碼。因為使用者輸入必須通過所有測試才能視為有效,所以在這種情況下多個驗證控制項就無法運作。若要執行這種類型的測試 (只有一項測試必須通過的邏輯 OR 運算),請使用 RegularExpressionValidator 驗證控制項,然後在控制項內指定多個有效模式。此外,您可以使用 CustomValidator 驗證控制項然後撰寫自己的驗證程式碼。

顯示錯誤資訊

在呈現的網頁中通常都看不到驗證控制項。然而,如果控制項偵測到錯誤,它就會顯示您所指定的錯誤訊息文字。錯誤訊息可用多種方式顯示,如下表所示。

顯示方法

說明

內嵌

每個驗證控制項可以個別就地顯示錯誤訊息 (通常是在發生錯誤的控制項旁)。

摘要

驗證錯誤可以被收集起來,然後顯示在一個地方 ─ 例如網頁的上方。這種策略通常會與在錯誤的輸入欄位旁顯示訊息的方式共用。如果使用者在 Internet Explorer 4.0 或更新版本中工作,摘要會顯示在訊息方塊中。

如果您使用驗證群組,每個不同群組都需要 ValidationSummary 控制項。

就地顯示及摘要

摘要和內嵌的錯誤訊息可能不相同。您可以使用這個選項就地顯示較短的錯誤訊息,然後在摘要中顯示詳細資訊。

自訂

您可以擷取錯誤資訊並設計自己的輸出來自訂錯誤訊息顯示。

如果您使用就地或摘要顯示選項,則可使用 HTML 格式化錯誤訊息文字。

安全性注意事項:

如果建立了自訂錯誤訊息,請確認並未顯示有助於惡意使用者危害應用程式的資訊。如需詳細資訊,請參閱 HOW TO:顯示安全錯誤訊息

驗證物件模型

您可以使用個別驗證控制項及網頁公開的物件模型,與驗證控制項進行互動。每個驗證控制項會公開本身的 IsValid 屬性,您可以測試屬性來判斷該控制項是否通過驗證測試。網頁也會公開摘要網頁上所有驗證控制項 IsValid 狀態的 IsValid 屬性。這個屬性可以讓您執行單一測試,判斷是否可以繼續自行處理部分。

網頁也會公開包含網頁所有驗證控制項清單的 Validators 集合。您可在這個集合中進行迴圈 (Loop),以檢查個別驗證控制項的狀態。

注意事項:

用戶端驗證的物件模型中有些不同之處。如需詳細資訊,請參閱 ASP.NET 伺服器控制項的用戶端驗證

自訂驗證

您可以利用下列方式自訂驗證程序:

  • 您可以指定錯誤訊息的格式、文字和位置。此外,您也可以指定使用個別方式或摘要顯示錯誤訊息。

  • 您可以使用 CustomValidator 控制項建立自訂驗證。控制項會呼叫您的邏輯,但在設定錯誤狀態、顯示錯誤訊息等部分的運作方式則與其他驗證控制項相同。這提供了一種簡單的方式來建立自訂驗證邏輯,同時使用網頁的驗證架構。

  • 您可以攔截用戶端驗證的驗證呼叫並替代或加入自己的驗證邏輯。

請參閱

其他資源

驗證 ASP.NET 控制項