Пользовательский валидатор не работает для текстового поля

Я изучаю, как использовать собственный валидатор для проверки на стороне сервера, но я не могу заставить его работать. Всякий раз, когда я нажимаю кнопку с пустым текстовым полем, сообщение об ошибке не появляется. Что я делаю неправильно?

<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>

<asp:CustomValidator ID="CustomValidator1" ControlToValidate="TextBox1"
     OnServerValidate="CustomValidator1_ServerValidate" ValidationGroup="ValidateGp"
     ErrorMessage="This is a custom error validator" runat="server"/>

<asp:Button ID="Button1" runat="server" Text="Button" ValidationGroup="ValidateGp"/>

protected void CustomValidator1_ServerValidate(object source, ServerValidateEventArgs args)
{
    if (args.Value.Equals(string.Empty))
    {
        args.IsValid = false;
    }
    else
    {
        args.IsValid = true;
    }
}

person coffeeak    schedule 31.07.2013    source источник
comment
Возможный дубликат: stackoverflow .com/questions/5119821/   -  person    schedule 31.07.2013


Ответы (2)


Вы пропустили ValidateEmptyText="true" для

<asp:CustomValidator ID="CustomValidator1"
                    ValidateEmptyText="true" runat="server" ValidationGroup="ValidateGp" ErrorMessage="This is a custom error validator" ControlToValidate="TextBox1" OnServerValidate="CustomValidator1_ServerValidate"></asp:CustomValidator>
person vml19    schedule 31.07.2013

В качестве альтернативы принудительной пустой проверке, поскольку в некоторых случаях пустой TextBox является допустимым (!), я предлагаю вам перехватить событие изменения TextBox и принудительно ввести Page.Validate().

person Fandango68    schedule 18.02.2016