2009-11-20 107 views
0

我創建了自定義控件和自定義驗證器(擴展了BaseValidator)。在自定義控件上,我設置了ValidationProperty(「Values」)。問題是,除非我執行Page.Validate(),否則發送回發時驗證不起作用。而當我打電話Page.Validate()所有驗證器都執行這不是我期望回發。創建自定義ASP.NET驗證器

所以問題是我該如何創建自定義驗證器,當控制值更改並驗證該控件時將執行該驗證器?

回答

1

這不是驗證者的工作方式。除非您使用ValidationGroup設置,否則頁面上的所有驗證器都會自動激活。您不必顯式調用Page.Validate()。你需要不過來包裝你的代碼在這樣的檢查,:

if(Page.IsValid) 
{ 
    //do something here 
} 

不像客戶端驗證,服務器端驗證不會阻止該網頁回發和處理事件爲正常。

要創建一個只有在控件值發生變化時纔會生效的控件,需要一些hackery,因爲更改事件在驗證器執行後觸發。

+0

是的,這實際上是悲傷的。我只是發現,如果我用兩個驗證器創建兩個字段,並且其中一個字段將AutoPostBack屬性設置爲true,那麼當客戶端驗證第一個字段並顯示錯誤消息後,我在第二個字段中輸入文本時,所有錯誤消息消失:( – 2009-11-21 14:56:36

0

您是否嘗試過使用驗證組?