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 =>
{
});
}
}
我在一段時間之前刪除了ControlToValidate,之後在某個論壇發帖。但是錯誤信息仍然沒有顯示。更改顯示爲靜態或動態也沒有幫助:((所有其他驗證器都設置爲「無」) –
@ChristoferOlsson添加ChangePasswordServerValidate方法的代碼請 – nmat
說完:) –