Я использовал ValidatorEnable, чтобы отключить RequiredFieldValidator в javascript. Однако при обратной передаче элемент управления, проверяемый валидатором, все еще проверяется ... хотя я отключил валидатор на клиенте.
Я понимаю, почему это происходит, поскольку я отключил только проверку клиента ... однако есть ли хороший способ определить, что я отключил проверку клиента, а затем отключить проверку сервера при обратной передаче?
потому что я скрываю элементы страницы на клиенте - и они содержат валидаторы. Я отключаю клиентскую часть валидаторов, когда скрываю эти элементы. Затем, когда я отправляю обратную передачу, у меня возникает проблема с проверкой сервера, поскольку он не знает, когда я отключился.





Из вашего вопроса неясно, что вы отключаете. RequiredFieldValidator имеет свойство Enabled и EnableClientScript.
Если вы хотите отключить проверку и на клиенте, и на сервере, вы должны установить для Enabled значение false.
Чтобы отключить только клиентскую сторону, установите для EnableClientScript значение false.
Вы можете, отключив проверку клиента (предположительно с помощью JavasScript?), Также установить значения в скрытом вводе, которые вы могли бы запросить в методе загрузки страницы. Таким образом, вы можете проверить значение скрытого ввода (через массив Request.Form {]), чтобы отключить валидаторы на стороне сервера перед запуском события валидации.
Другой вариант - переопределить метод страниц Validate (), чтобы отключить валидаторы на основе тех же правил, которые скрывали их на стороне клиента.
Арахис, я только что описал ту же проблему, что и вы. На стороне клиента у меня есть javascript, который отключает необходимые валидаторы полей в зависимости от их выбора в пользовательском интерфейсе. Однако проверка на стороне сервера все еще продолжалась.
Во время загрузки я добавил метод отключения моих валидаторов с использованием тех же правил, что и для javascript. В моем случае это зависело от выбора пользователем радиокнопки:
this.requiredValidator.Enabled = this.myRadioButton.Checked;
Кажется, это работает при загрузке ВТОРОЙ страницы, но не первой. После отладки я обнаружил, что при срабатывании этой строки считается, что установлен неправильный переключатель. Состояние просмотра / данные публикации не применялись к элементу управления в тот момент, когда я проверял его, чтобы отключить свой валидатор. Причина, по которой я разместил это во время загрузки, заключалась в том, чтобы убедиться, что я отключил валидатор до его запуска.
Итак, решение, похоже, должно иметь что-то вроде строки выше ПОСЛЕ ViewState, но ДО валидаторов.
Перегрузка метода Validate (), как предположил Palehorse, сработала и позволила мне убедиться, что валидаторы на стороне сервера были включены / отключены в зависимости от текущего выбора пользователя.
Если вы его отключаете, зачем вам RequiredFieldValidator?