Asp: RequiredFieldValidator вызывает проверку на сервере, даже если валидатор отключен - PullRequest
1 голос
/ 28 марта 2011

Я буду держать это как можно короче, но это разрушит мою голову.У меня есть пользовательский элемент управления с меткой и полем.Я добавляю пользовательский элемент управления динамически на страницу во время выполнения.Там может быть много пользовательских элементов управления, которые создаются динамически из данных, которые я получаю из базы данных.Данные описывают имя метки и, если текстовое поле должно быть заполнено .. т.е. требуется ли это.У меня есть отправка на главной странице, которая имеет группу проверки. Все валидаторы на пользовательских элементах управления имеют одинаковую группу проверки.Пока все хорошо, я надеюсь.

Пользовательский элемент управления имеет RequiredFieldValidator для текстового поля и выглядит все так.Валидатор включен по умолчанию.

<asp:TextBox ID="dfControl" runat="server" Text="" ToolTip="ucsAlphanumericEntryDC" Width="95%" CausesValidation="true"/>
<asp:RequiredFieldValidator ID="rfvContol" runat="server" ErrorMessage="Value is required" EnableClientScript="true" 
    ValidationGroup="ValidateContols" ControlToValidate="dfControl" Display="Dynamic" Enabled="true"></asp:RequiredFieldValidator>

Когда я динамически загружаю элемент управления, я проверяю параметр, чтобы сказать, является ли поле обязательным или нет.Параметр взят из базы данных, представляющей элемент управления, который я собираюсь нарисовать.Если поле НЕ является обязательным полем, я отключаю проверку в page_preRender .. и пробовал в загрузке.

       if (!DisplayRequired)
        {
            rfvContol.EnableClientScript = false;
            rfvContol.Enabled = false;
            dfControl.CausesValidation = false;
        }

Пока все хорошо.Все это работает на стороне клиента для проверки только пользовательских элементов управления с установленным значением «Требуется отображение», при этом Validator остается включенным.

однако при публикации страницы с кнопки отправки, которую я подключил к той же группе проверки, что ипользователь контролирует, я проверяю IsValid при отправке, и если он ложный, я ничего не сохраняю.Но когда страница перерисовывается на клиенте ... У меня есть сообщения об ошибках на всех пользовательских элементах управления, в которых говорится, что они требуются ... хотя я отключил некоторые из них там, где это не требуется.состояние просмотра по умолчанию для элемента управления, который, как я предполагаю, включен.

Я также пытался не перерисовывать элементы управления с помощью валидаторов, заключая код в if (! IsPostBack)

Кто-нибудь знает, почему валидаторы запускаются, когда они отключены при загрузке первой страницы, но не отключаются при обратной передаче.

спасибо, Мик

1 Ответ

3 голосов
/ 28 марта 2011

Попробуйте либо установить Visible = false с сервера, у меня это работает.Или вы также можете использовать клиентскую сторону ValidatorEnable(valid, false); для отключения валидатора.

HTH.

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