Я создаю функцию, позволяющую пользователям изменять свои пароли. Таким образом, это означает, что у меня есть три текстовых поля, которые должны быть проверены (текущий = текущий текущий, и новый == повтор). Поэтому я пытаюсь создать пользовательский валидатор в первый раз и не знаю, как это сделать. Из другого примера, который я видел, валидатор привязан только к одному полю ввода, что означает, что свойство 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, после спотыкания на каком-то форуме. Но сообщение об ошибке все еще не отображается. Изменение Display to Static или Dynamic не помогло :((fwiw, все другие валидаторы имеют «None»). –
@ChristoferOlsson добавьте код для метода ChangePasswordServerValidate, пожалуйста, – nmat
Сказал и сделал :) –