условная проверка на основе других полей, c # - PullRequest
3 голосов
/ 02 апреля 2011

У меня есть пара сценариев, которые мне нужно создать:

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

2) если в конкретном текстовом поле есть данные, необходимо ввести другое текстовое поле (если поле адреса заполнено, указать город, штат и почтовый индекс)

У меня есть код для вызова из пары CustomValidators, которая выглядит правильно:

<asp:CustomValidator ID="cvtxt_pat_id" runat="server" 
     OnServerValidate="txt_pat_idValidate" ControlToValidate="txt_pat_id"
     ErrorMessage="Text must be 8 or more characters." Display="Dynamic"/>

protected void txt_pat_idValidate(object sender, ServerValidateEventArgs e)
{
    if (ddl_addl_pat_info.SelectedValue.ToString() == "2")
    {
        e.IsValid = (e.Value.Length > 1);
    }
    else
    {
        e.IsValid = true;
    }
}

<asp:CustomValidator ID="cvtxt_pat_id" runat="server" 
     OnServerValidate="addresspartsValidate" ControlToValidate="txt_city"
     ErrorMessage="Complete address must be entered." Display="Dynamic"/>

protected void addresspartsValidate(object sender, ServerValidateEventArgs e)
{
    if (txt_pat_address.Text.Length > 1)
    {
        e.IsValid = (e.Value.Length > 1);
    }
    else
    {
        e.IsValid = true;
    }
}

Но, насколько я понимаю, если текстовое поле, которое я тестирую, пустое, оно никогда не проверяется, поэтому оно не запускается, если оно пустое, что затрудняет проверку на наличие обязательного поля. Так ... мысли?

Кроме того, я получаю противоречивые истории о том, нужно ли мне ОБА клиентской и серверной версии моего теста. Возможно, это требовалось в более старой версии, а теперь нет?

1 Ответ

4 голосов
/ 02 апреля 2011

Вы должны думать об этом немного задом наперед.Ваш пользовательский валидатор должен быть на элементе, который должен показать ошибку (Особое текстовое поле).Пользовательский валидатор в текстовом поле должен проверить раскрывающийся список, чтобы увидеть, есть ли в раскрывающемся меню конкретное условие, необходимое для запуска обязательного условия для текстового поля.Если установлено, что это правда, то вы хотите проверить, есть ли в текстовом поле входные данные и вернуть соответственно args."правда".

Обычно использование обоих разрешено, если ваш сайт не гарантирует, что для использования страницы включен JavaScript.В некоторых браузерах JavaScript может быть отключен;если JavaScript отключен, он обходит вашу проверку.Использование проверки на стороне клиента хорошо, потому что она не отправляет обратно каждый раз для проверки ввода, она делает это правильно на клиенте.

...