2009-06-11 72 views
11

假設頁面TestPage.aspx有兩個控件。第一個控件是具有名爲「AddressGroup」的驗證組的地址控件。該組包含幾個驗證控件,這些控件與該控件的驗證摘要中的相關。第二個控件是信用卡控件,並具有一個名爲「CreditCardGroup」的驗證組。它也有幾個驗證器和一個摘要來顯示結果。爲了增加這個問題,頁面上還有一些隨機控件,它們也有與第三個ValidatorSummary控件綁定的驗證器。用一個按鈕觸發多個驗證組?

當用戶按下「全部執行」按鈕時,我希望頁面觸發所有三個驗證組。按鈕本身可以綁定到單個組或未標記的組。據我所知,它不能綁定到多個組。

解決方案不是從控件中提取驗證,因爲這樣會降低在獨立控件中使用它們的價值。謝謝你的想法。

回答

5

你說的是客戶端還是服務器端驗證? Jamie的答案是服務器端的問題,但對於客戶端驗證,您可能需要編寫自己的JS函數,這將觸發所有三個組合的驗證。在服務器端

+7

對於JS,你可以調用Page_ClientValidate(),這將在頁面上觸發所有組驗證。 – Ahmed 2010-02-14 15:01:57

12

調用驗證方法爲每個驗證組內的單個按鈕的點擊處理程序:

bool isValidTest = false; 
Validate("AddressGroup"); 
isValidTest = IsValid; 
Validate("CreditCardGroup"); 
isValidTest &= IsValid; 
// etc. 
if (!isValidTest) return; 

下一個問題,你可能會遇到的是,ValidationSummary控件被鏈接到一個驗證組。我發現顯示多個組的所有錯誤消息(不使用控制樹)的唯一方法是使用多個ValidationSummary控件。

對於用戶控件,您可能希望讓其Validate方法對其包含的所有控件執行驗證並顯示其自己的摘要。

編輯添加:isValidTest變量不是必需的。根據文檔:

注意,當你調用Validate 方法,IsValid屬性反映 所有羣體的有效性驗證 至今。

2

呼叫Page.Validate()這將驗證所有驗證..