ASP.NET - как остановить ненужную проверку сервера - PullRequest
2 голосов
/ 06 января 2009

Я использовал ValidatorEnable, чтобы отключить RequiredFieldValidator в JavaScript. Однако при обратной передаче проверяемый валидатором элемент управления все еще проверяется ... хотя я отключил валидатор на клиенте.

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

Ответы [ 3 ]

3 голосов
/ 06 января 2009

Вы могли бы, когда вы отключили проверку клиента (предположительно с JavasScript?), Также установить значения в скрытом вводе, которые вы могли бы запросить в методе загрузки страницы. Таким образом, вы можете проверить значение скрытого ввода (через массив Request.Form {]), чтобы отключить средства проверки на стороне сервера до запуска события проверки.

Другим вариантом будет переопределение метода Validate () для страниц, чтобы отключить валидаторы на основе тех же правил, которые скрывали их на стороне клиента.

2 голосов
/ 06 января 2009

Из вашего вопроса не понятно, что вы отключаете. RequiredFieldValidator имеет свойство Enabled и EnableClientScript.

Если вы хотите отключить проверку как на клиенте, так и на сервере, вам следует установить для Enabled значение false.

Чтобы отключить только сторону клиента, установите для параметра EnableClientScript значение false.

0 голосов
/ 06 января 2009

Арахис, я только что описал ту же проблему, что и вы. На стороне клиента у меня есть javascript, который отключает обязательные валидаторы полей в зависимости от их выбора в пользовательском интерфейсе. Однако проверка на стороне сервера продолжала выполняться.

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

this.requiredValidator.Enabled = this.myRadioButton.Checked;

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

Итак, похоже, что решение состоит в том, чтобы иметь что-то вроде строки над AFTER ViewState, но ПЕРЕД валидаторами.

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

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