Передать контроль методу - PullRequest
3 голосов
/ 23 сентября 2011

Я пытаюсь создать метод, который будет самодостаточно проверять любой элемент управления TextBox, переданный ему.

Вот что я получил до сих пор:

Пользовательский валидатор

protected void CustomValidatorDelLN_ServerValidate(object sender, ServerValidateEventArgs args)
    {
        CustomValidator ThisValidator = sender as CustomValidator;
        TextBox MyBox = FindControl(ThisValidator.ControlToValidate) as TextBox;

        args.IsValid = isValid(MyBox);
    }

Метод проверки

protected bool isValid(System.Web.UI.WebControls.TextBox MyBox)
    {
        bool is_valid = MyBox.Text != "";
        MyBox.BackColor = is_valid ? System.Drawing.Color.White : System.Drawing.Color.LightPink;
        return is_valid;
    }

Код компилируется нормально, но я получаю исключение

NullReferenceException, не обработанное кодом пользователя

on

bool is_valid = MyBox.Text != "";

Когда я запускаю проверку.

Я знаю, что я близко (ну, я думаю, что я), но где я иду не так?

Ответы [ 4 ]

1 голос
/ 23 сентября 2011

сначала нужно проверить, что сам объект существует, после приведения:

bool is_valid = MyBox != null;

и после этого вы можете проверить его текстовое свойство

1 голос
/ 23 сентября 2011

Ваша проблема в том, что метод FindControl() не является рекурсивным, поэтому MyBox является нулевым.Вам нужно написать рекурсивный FindControl() метод, такой как здесь , если вы хотите, чтобы он работал правильно.

Возможно, вы также захотите проверить, является ли MyBox нулевыми вернитесь из метода, если он есть.

0 голосов
/ 23 сентября 2011

Для полноты кода этот код помог мне:

protected void CustomValidatorDelLN_ServerValidate(object sender, ServerValidateEventArgs args)
    {
        args.IsValid = isValid(txtDeliveryLastName);
    }

    protected bool isValid(System.Web.UI.WebControls.TextBox MyBox)
    {
        bool is_valid = MyBox.Text != "";
        MyBox.BackColor = is_valid ? System.Drawing.Color.White : System.Drawing.Color.LightPink;
        return is_valid;
    }
0 голосов
/ 23 сентября 2011

Вы пытаетесь проверить пустое текстовое поле.Вы не можете проверить пустую строку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...