2013-07-15 68 views
0

我正在爲用戶構建一個功能來更改其密碼。所以這意味着我有三個文本字段需要驗證(是當前==實際電流,並且是新的==重複)。所以我試圖第一次構建一個自定義驗證器,但不知道如何執行此操作。從我見過的另一個例子來看,驗證器僅與一個輸入字段綁定,這意味着ControlToValidate屬性是相當自我解釋的。但現在呢?使用CustomValidator驗證多個控件

我試圖做到這一點:

var passwordValidator = new CustomValidator() 
      {     
       Display = ValidatorDisplay.None, 
       ValidationGroup = "PasswordValidationGroup" 
      }; 

passwordValidator.ServerValidate += ChangePasswordServerValidate; 

ValidationPlaceHolder.Controls.Add(passwordValidator); 

但我沒有得到結果我之後。驗證程序在預期的時間內得到執行,並且調試按照預期顯示它跟在if/else結構之後,但是錯誤信息從不會被設置。那麼如何設置它來驗證三個控件?它與ValidationGroup有什麼關係?我只是將該屬性設置爲與其他自定義驗證器的屬性相似。

private void ChangePasswordServerValidate(object sender, ServerValidateEventArgs e) 
     { 
      var validator = sender as IValidator; 
      var user = SessionManager.Get<OrderFacade>(SessionKeys.OrderFacade).User; 

      if (CurrentPasswordTextBox.Text == "" || NewPasswordTextBox.Text == "" || RepeatPasswordTextBox.Text == "") 
      { 
       validator.ErrorMessage = SiteTextResources.CreateAccount_YourEmailAddressEmpty; 
       e.IsValid = false; 
      } 
      else if (!NewPasswordTextBox.Text.Equals(RepeatPasswordTextBox.Text)) 
      { 
       validator.ErrorMessage = SiteTextResources.CreateAccount_YourEmailAddressEmpty; 
       e.IsValid = false; 
      } 
      else 
      { 
       ResolveClient<IUserClient>().TryPassword(user.UserName, CurrentPasswordTextBox.Text, passwordSuccessfullyChanged => 
       { 
        e.IsValid = passwordSuccessfullyChanged; 
        validator.ErrorMessage = String.Empty; 
       }, error => 
       { 

       }); 
      }    
     } 

回答

0

由於您將顯示設置爲None,因此未設置錯誤消息。將其更改爲StaticDynamic。從documentation

  • - 驗證消息從不顯示在線。
  • 靜態 - 驗證消息的空間分配在頁面 佈局中。
  • 動態 - 如果驗證失敗,驗證消息的空間會動態添加到 頁面。

至於驗證的詳細信息,如果您需要檢查的3所控制的內容,這樣做的ChangePasswordServerValidate方法內並設置相應e.IsValidControlToValidate屬性在此處不相關。

+0

我在一段時間之前刪除了ControlToValidate,之後在某個論壇發帖。但是錯誤信息仍然沒有顯示。更改顯示爲靜態或動態也沒有幫助:((所有其他驗證器都設置爲「無」) –

+0

@ChristoferOlsson添加ChangePasswordServerValidate方法的代碼請 – nmat

+0

說完:) –

相關問題