Пользовательский валидатор не работает для текстового поля
Я учусь, как использовать пользовательский валидатор для проверки на стороне сервера, но я не могу заставить его работать. Всякий раз, когда я нажимаю на кнопку с пустым текстовым полем, сообщение об ошибке не отображается. Что я делаю неправильно?
<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;
}
}
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>
В качестве альтернативы принудительной пустой проверки, поскольку в некоторых случаях пустой TextBox является допустимым (!), Я предлагаю вам перехватить TextBox
изменить событие и заставить Page.Validate()
там.