Не знаю, что здесь не так. Это страница, разработанная кем-то другим, и я пытаюсь исправить одну из проблем.
Сценарий:
Сайт ASP.NET.
Login.aspx имеет <asp:login>
и три группы проверки. Login.aspx.cs - это частичный класс user_login.
Каждая группа проверки имеет текстовое поле и ассоциированный пользовательский валидатор. Все три настраиваемых валидатора срабатывают, когда что-то вводится в соответствующее текстовое поле, но проблема заключается в том, что только первое текстовое поле (привязанное к validationgroup = 1) возвращает false, когда проверка не выполняется.
Для 2-го и 3-го настраиваемый валидатор срабатывает, но при возникновении проблемы с проверкой и даже после установки «args.IsValid = false;» процесс продолжается с тем, что необходимо выполнить дальше.
Не знаю, что здесь происходит. Я хочу, чтобы пользовательский валидатор возвращал false. В худшем случае, есть ли способы вернуть элемент управления обратно в «текстовое поле» в случае сбоя проверки?
Ниже используется пользовательский валидатор.
<asp:CustomValidator ID="ExistingIdValidator" runat="server" ControlToValidate="NewUserName"
ValidateEmptyText="true" ValidationGroup="NewUserForm"
OnServerValidate="NewUserNameCheck_ServerValidate">
</asp:CustomValidator>
protected void NewUserNameCheck_ServerValidate(object source, ServerValidateEventArgs args)
{
CustomValidator validator = source as CustomValidator;
if (validator != null)
{
string NewuserNameValue = this.NewUserName.Text;
Guid registeredUserId = (Guid)Membership.GetUser(NewuserNameValue).ProviderUserKey;
if (registeredUserId != null)
{
validator.IsValid = false;
this.FailureText_New.Text = "This UserID already exists. Please login as existing user";
args.IsValid = false;
}
}
}
validator.IsValid = false;
? Мне это кажется немного ... странным. - person Josh Darnell   schedule 30.01.2012Page.IsValid
? - person John Pick   schedule 06.02.2012if (!Page.IsValid) return;
. Таким образом вы предотвращаете выполнение остальной части события и заставляете пользователя исправлять любые ошибки в форме. - person John Pick   schedule 08.02.2012