asp.net CustomValidator никогда не запускает OnServerValidate

Вы не можете. Java не разрешает общие типы для констант перечисления. Они разрешены для типов перечислений, хотя:

public enum B implements A<String> {
  A1, A2;
}

. Что вы могли бы сделать в этом случае, либо иметь тип перечисления для каждого родового типа, либо «поддельный» с перечислением, просто сделав его классом :

public class B<T> implements A<T> {
    public static final B<String> A1 = new B<String>();
    public static final B<Integer> A2 = new B<Integer>();
    private B() {};
}

К сожалению, оба они имеют недостатки.

13
задан Bryce Fischer 30 October 2009 в 17:16
поделиться

3 ответа

Чтобы использовать настраиваемый валидатор, вам также понадобится валидатор requiredfield для того же элемента управления. Просто установите requiredfieldvalidator для NoteDateTextBox, и он должен запускать для вас событие сервера customvalidator.

10
ответ дан 1 December 2019 в 19:23
поделиться

Чтобы добавить к ответу Дэна, альтернативный способ использования CustomValidator :

  • Удалите свойство ControlToValidate
  • в вашем методе OnServerValidate укажите ссылку на проверяемый элемент управления вместо использования ServerValidateEventArgs.Value , например

Пример

Передний код

<asp:ValidationSummary runat="server" DisplayMode="BulletList" ValidationGroup="form" />

<asp:TextBox runat="server" ID="_textbox"/>
<asp:CustomValidator runat="server" 
        ErrorMessage="Please enter the secret" 
        OnServerValidate="TextBoxValidate"
        ValidationGroup="form" 
        Display="None"
        EnableClientScript="false" />
<asp:button runat="server" OnClick="ButtonClick" Text="Press" />

Зарезервированный код

protected void ButtonClick(object sender, EventArgs e)
{
    Page.Validate();

    if (Page.IsValid)
    {
        // Do something
    }
}

protected void TextBoxValidate(object sender, ServerValidateEventArgs args)
{
    args.IsValid = _textbox.Text == "secret";
}
7
ответ дан 1 December 2019 в 19:23
поделиться

Когда вы проверяете, пусто ли текстовое поле, используйте этот ValidateEmptyText = "true" в CustomValidator.

В противном случае проверка обязательного поля не будет работать.

15
ответ дан 1 December 2019 в 19:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: