ASP.NET 2.0 - проверка невидимых элементов управления на той же странице? - PullRequest
1 голос
/ 13 января 2009

У меня есть приложение, которое использует элементы управления RequiredFieldValidator с ValidationSummary, и после нажатия кнопки «Готово» все поля проверяются. На этой странице есть несколько разных частей, которые сделаны видимыми или невидимыми, и я заметил, что валидаторы активируются только для видимых элементов управления и игнорируют невидимые. Это полезный функционал, который используется моей программой.

однако ....

Мне нужно проверить элементы управления, которые не отображаются, поскольку я разделяю части одной длинной страницы на сегменты. Поэтому мне было интересно, есть ли способ принудительно проверить видимые = ложные элементы управления проверкой (или элементы, являющиеся частью невидимой таблицы и т. Д.) На Page.IsValid, не делая их снова видимыми?

Заранее спасибо!

P.S. Я попытался с помощью свойства ValidationGroup проверить, поймает ли это их, но это не так.

Ответы [ 4 ]

1 голос
/ 13 января 2009

Если элемент управления не .Visible, то HTML не существует для проверки. Вместо установки Control.Visible = false попробуйте установить класс css, чтобы скрыть его.

В вашей таблице стилей:

.invisible { visibility:hidden; }

А потом вместо .Visible = false использовать:

Control.CssClass = "invisible";
0 голосов
/ 14 января 2009

В ответ на 2-й комментарий к сообщению Майка Комстока (у меня пока недостаточно репутации, чтобы комментировать :() ...

для удаления пробела попробуйте:

.invisible { visibility:hidden; display:none; }
0 голосов
/ 13 января 2009

Если вы делаете эти элементы управления невидимыми на стороне сервера, то они даже не отображаются на клиенте для проверки.

Используете ли вы AJAX для переключения между вашими разделами / сделать элементы управления невидимыми? Если это так, то вам, вероятно, следует проверить элементы управления этих частичных обратных ссылок на страницы (как предложил Джефф Мартин), прежде чем переключать элементы управления невидимым.

Я думаю, нам нужна дополнительная информация о том, как вы это делаете, чтобы дать вам хороший ответ.


Хорошо, поэтому нет AJAX (на основе вашего комментария) ... если вы используете элементы управления ASP.NET Validation, они имеют часть на стороне клиента и часть на стороне сервера. Вы можете видеть, действительны ли валидаторы в ваших обработчиках событий в вашем коде. Возможно, вам придется сделать что-то конкретное, чтобы заставить их запускать свой код проверки на стороне сервера, и ваши невидимые элементы управления могут не сохранять свои значения между несколькими обратными передачами. Но это должно быть выполнимо.

Суть в том, что элементы управления ASP.NET Validation могут быть установлены таким образом, чтобы они ничего не делали на стороне клиента, но они все еще обеспечивают проверку на стороне сервера. Вы по сути в этой лодке.

Я думаю эта статья MSDN имеет все, что вам нужно.

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

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

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

альтернативой будет использование css, чтобы сделать элементы управления невидимыми, а не на стороне сервера. Элементы управления могут быть в div с отображением: нет; Все элементы управления будут отображены вместе со сводкой проверки.

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