2010-05-11 53 views
1

有沒有辦法讓自定義驗證器從兩個控件的輸入,例如說兩個複選框,並確保只有一個被檢查?CustomValidator來驗證多個控件

還是我在談論這一切都是錯誤的,更重要的是,如果我能夠讓我指出正確的方向嗎?

即使這是錯誤的方向實際上我想知道如何做到這一點,以防萬一遇到適用的情況,即如果可能的話。

感謝您提前幫忙。

+0

,爲什麼不使用單選按鈕組?如果兩者都可以不選中,那麼這是不夠的(除非你在組中沒有提供第三個選項) – 2010-05-11 15:15:24

+0

不幸的是,這是一個超出我的控制的設計決定。他們對單選按鈕不滿意。 – 2010-05-11 15:24:20

回答

1

AJAX控件工具包有一個專用複選框列表。我同意它的需要,因爲單選按鈕不能像複選框那樣取消選擇。

如果你正在尋找一個自定義的驗證器,聽起來好像你要麼在服務器端進行,此時你可以在後面的代碼中做任何你想要的邏輯。相反,你可以推出自己的JavaScript來執行它。

+0

我會研究使用AJAX Control Toolkit,並讓你知道它是如何工作的。我嘗試使用自己的JavaScript,但無論出於何種原因,我寫的東西和我在Google上找到的示例都無法正常工作。我會選擇一個複選框,然後測試我會選擇另一個複選框,他們都會保持檢查狀態,我甚至無法通過再次單擊來取消選中它們。 – 2010-05-11 15:27:20

+0

控制工具包不起作用有兩個原因。 1)我們仍然在這裏運行2.0,不期望隨時升級,2.0版本的工具包不再可用。 2)我必須使用標準的html輸入標籤而不是複選框控件。 所以它看起來像我將不得不寫一些JavaScript來讓這個工作。 – 2010-05-11 18:27:34

2

如果你想確保只有兩個複選框中的一個被選中,你使用的是錯誤的控件。

使用單選按鈕設置排他性選擇。

+0

不幸的是,這是一個無法控制的決定。請求報告的人不喜歡單選按鈕並想要複選框。 :/否則是的,這將是正確的解決方案。 – 2010-05-11 15:25:09

1

我同意米切爾一個RadioButton似乎更合適。

但你有沒有嘗試連接一個CompareValidator並將其設置爲驗證UnEqual?

+0

這看起來也是一個很好的解決方案,我會研究這個和AJAX工具包的獨佔複選框列表,然後回來更新選中標記和upvotes。 – 2010-05-11 15:28:06

1

我工作,也對類似的問題。我解決這個問題的方式是爲我的每個控件創建一個驗證器,並將它們鏈接到確保您的驗證限制條件相同的方法。

protected void validator1_ServerValidate(...){ 
    myValidationMethod(...); 
} 

protected void validator2_ServerValidate(...){ 
    myValidationMethod(...); 
} 

它的工作原理,但如果你想要一個總是被檢查它很醜陋IMO