2011-05-07 57 views
2

我有一個asp.net文件:RequiredFieldValidator和CustomValidator同時觸發?

  • 3無線電盒,必須選擇一個
  • 其中項目必須選擇列表框
  • 驗證碼驗證

現在我有4個校驗:

  • 的CustomValidator的單選框
  • 的CustomValidator用於列表框
  • 的CustomValidator用於驗證碼驗證(保存在會話)
  • RequiredFieldValidator的用於驗證碼 - 文本框不爲空。

我的問題是訂單。 如果用戶嘗試發送公式並且所有4個驗證器都是錯誤的,則只會顯示RequiredFieldValidator,因爲其他3個是服務器端。 用戶現在認爲「哦,只有一個錯誤」,並糾正它。 之後,又發生了3次其他錯誤,用戶可能對此有點生氣 - 「爲什麼系統在第一次播放時不告訴我?!」

那麼,如何有一個用戶友好的solutiton?

有沒有辦法在同一時間觸發服務器端驗證,客戶端驗證失敗? 或者有沒有辦法在服務器端激發客戶端驗證? (注意!我嘗試去注意RequiredFieldValidator,而是做了第四個CustomValidator,我做到了這一點,我有4個CustomValidator,而且沒有Requ-Field-Val,最終沒有任何CustomValidator會被擊中,表現公式是發送=(我不知道爲什麼。)

回答

2

其中一個方法是使用EnableClientScript財產關閉客戶端驗證所需的字段校驗。所以,你在服務器端的所有驗證。

但更好的方法(如果可能的話)將使用客戶端驗證所有這些,即使用定製驗證器使用定製js驗證邏輯使用ClientValidationFunction屬性 - 請參閱t他的article爲這樣的例子。

1

爲控件驗證器和提交函數添加ValidationGroup =「abc」屬性使用Page.Validate(「abc」)方法在某個時間驗證服務器端控件。

就是這樣。

Page.Validate("abc") 
If Not Page.IsValid Then 
    Return False 
End If 
相關問題