Как я могу установить группу Validation динамически - PullRequest
2 голосов
/ 26 сентября 2008

У меня есть веб-страница ASP.NET 2.0 с 2 пользовательскими элементами управления (.ascx). Каждый UserControl содержит несколько валидаторов. Размещение ValidationSummary на странице отобразит все ошибки валидации обоих UserControl. Размещение ValidationSummary в каждом элементе управления UserControl будет отображать все ошибки обоих элементов управления дважды.

Что мне нужно, так это ValidationSummary для каждого UserControl, отображая только ошибки в этом UserControl.

Я пытался решить эту проблему, устанавливая свойство ValidationGroup для валидаторов в каждом динамическом контроле пользователя. Таким образом, каждая валидация должна отображать только ошибки своего UserControl. Я использовал этот код:

foreach (Control ctrl in this.Controls)
{
    if (ctrl is BaseValidator)
    {
        (ctrl as BaseValidator).ValidationGroup = this.ClientID;
    }
}
ValidationSummary1.ValidationGroup = this.ClientID;

Однако, похоже, это отключает проверку как на стороне клиента, так и на стороне сервера, поскольку при отправке формы проверка не выполняется.

Помощь

Ответы [ 2 ]

4 голосов
/ 26 сентября 2008

Элемент управления, который вызывает отправку формы (т. Е. Элемент управления Button), должен быть частью той же группы проверки, что и любые элементы управления ValidationSummary и * Validator.

2 голосов
/ 26 сентября 2008

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

Если вы хотите использовать один элемент управления для обратной передачи, вы все равно можете сделать это, но вам необходимо явно вызвать метод Page.Validate.

Page.Validate(MyValidationGroup1);
Page.Validate(MyValidationGroup2);
if(Page.IsValid)
{
    //do stuff
}

Предложение: Почему вы не предоставляете общедоступное свойство в ваших пользовательских элементах управления под названием ValidationGroup? В установщике вы можете явно установить группу валидации для каждого валидатора. Вы также можете использовать свой цикл, но было бы эффективнее установить каждый валидатор явно. Это может улучшить читаемость кода с помощью пользовательских элементов управления.

...