Проблема проверки ASP.NET - DropDownList динамически заполняется на клиенте - PullRequest
2 голосов
/ 28 апреля 2010

Я заполняю DropDownList, используя JS на клиенте, и проверяю его с помощью RequiredFieldValidator.

Это прекрасно работает на клиенте, но Page.IsValid постоянно возвращает false на сервере.

Это потому, что выбранное значение не было в DropDownList, когда оно было впервые передано на страницу?

Какой самый простой способ обойти это? (Мне нужно оставить проверку сервера включенной)

1 Ответ

3 голосов
/ 28 апреля 2010

Это потому что выбранное значение не было в DropDownList, когда это было первым подали на страницу?

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

На самом деле, добавление элементов динамически с помощью клиентского скрипта вызовет EventValidation, чтобы сообщить о возможной проблеме безопасности, и вам придется установить EnableEventValidation в false в вашей директиве <%@ Page %>, чтобы иметь возможность почта.

Лучший способ обойти это либо

  1. Создайте свои элементы на стороне сервера или

  2. Не используйте для этого серверный элемент управления (используйте обычный список выбора non-asp.net) и проверьте его вручную на сервере, просмотрев опубликованные значения.

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