ASP.NET проверяет все валидаторы с разными группами валидации - PullRequest
2 голосов
/ 13 октября 2010

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

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

Поэтому я назначил отдельную группу проверки для каждой сетки, уникальную по отношению к определенному свойству в элементе управления.Но у меня есть кнопка внизу страницы (без группы проверки), которая должна подтвердить ввод.Не имея группы проверки, она не будет автоматически проверять валидаторы гридов, поэтому я добавил обработчик кликов, который вызывает Page_ClientValidate().Нет кости - проверка появляется везде.

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

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

РЕДАКТИРОВАТЬ: Ах, поворот.Я попытался использовать подход, о котором я упоминал в конце - повторно показать скрытые сводки валидаторов / валидаций, которые являются недействительными - но код Microsoft тоже это предотвращает;в первой строке метода ValidatorValidate(validator, validationGroup, event) (вызываемого Page_ClientValidate(validationGroup) на каждом валидаторе на странице), validator.isvalid устанавливается на true и устанавливается только на возвращаемое значение функции валидации в условном выражении, котороезапускается только в том случае, если параметр validationGroup соответствует параметру валидатора.В результате все скрытые валидаторы помечаются как действительные, что затрудняет определение факта, является ли валидатор действительным, потому что он действительно действителен или потому что Microsoft глупа в разработке кода проверки на стороне клиента.

...