Запуск нескольких групп проверки с помощью одной кнопки? - PullRequest
12 голосов
/ 12 июня 2009

Допустим, страница TestPage.aspx имеет два элемента управления. Первый элемент управления - это адресный элемент управления, имеющий группу проверки с именем «AddressGroup». Эта группа содержит несколько элементов управления проверкой, которые объединены в сводке проверки для этого элемента управления. Второй элемент управления - это элемент управления кредитной картой, имеющий группу проверки с именем «CreditCardGroup». Он также имеет несколько валидаторов и сводку для отображения результатов. Чтобы добавить к этой проблеме, на странице есть несколько случайных элементов управления, которые также имеют валидаторы, которые связаны с третьим элементом управления ValidatorSummary.

Когда пользователь нажимает кнопку «Сделай все», я бы хотел, чтобы страница активировала все три группы проверки. Сама кнопка может быть привязана к одной группе или группе без меток. Насколько я могу судить, его нельзя привязать к нескольким группам.

Решение состоит в том, чтобы не извлекать валидацию из элементов управления, поскольку это умаляет ценность наличия их в отдельных элементах управления. Спасибо за ваши мысли.

Ответы [ 3 ]

12 голосов
/ 12 июня 2009

Вызвать метод Validate для каждой группы проверки отдельно в обработчике нажатия кнопки:

bool isValidTest = false;
Validate("AddressGroup");
isValidTest = IsValid;
Validate("CreditCardGroup");
isValidTest &= IsValid;
// etc.
if (!isValidTest) return;

Следующая проблема, с которой вы можете столкнуться, заключается в том, что элемент управления ValidationSummary связан с одной группой проверки. Единственный найденный мной способ отображения всех сообщений об ошибках для нескольких групп (без обхода дерева элементов управления) - это использование нескольких элементов управления ValidationSummary.

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

Отредактировано для добавления: переменная isValidTest не нужна. Согласно документам:

Обратите внимание, что при вызове Validate метод, свойство IsValid отражает валидность всех групп подтверждена пока.

5 голосов
/ 12 июня 2009

Вы говорите о проверке на стороне клиента или на стороне сервера? Ответ Джейми точен на стороне сервера, но для проверки на стороне клиента вам, вероятно, понадобится написать свою собственную функцию JS, которая будет запускать проверку для всех трех групп совместно.

2 голосов
/ 22 октября 2009

Позвоните Page.Validate() на стороне сервера, он проверит все валидаторы.

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