Проблема с группой проверки User Control - PullRequest
5 голосов
/ 22 июня 2011

У меня есть два экземпляра пользовательского элемента управления на странице.Оба имеют поля и одну кнопку отправки.

Я установил группы валидации для полей и валидаторов, но по какой-то причине при валидации валидаторы двух пользовательских элементов управления запускаются.

Ответы [ 2 ]

7 голосов
/ 27 января 2013

Этот метод также работает:

Dim valGroup = String.format("{0}-validation", Guid.NewGuid())

rfv001.ValidationGroup = valGroup
rfv002.ValidationGroup = valGroup
rfv003.ValidationGroup = valGroup
rfv004.ValidationGroup = valGroup
rfv005.ValidationGroup = valGroup

btnSubmit.ValidationGroup = valGroup

Вам нужно только установить значения для ValidationGroup вручную.

3 голосов
/ 22 июня 2011

Вы можете выставить свойство ValidationGroup в вашем UserControl, которое вы установили бы со страницы.Это значение должно храниться в ViewState, чтобы каждый экземпляр UserControl получал разные группы ValidationGroup (если ваша страница назначает разные).

Например:

Public Property ValidationGroup() As String
 Get
  Return CStr(ViewState("ValidationGroup"))
 End Get
 Set(ByVal value As String)
  SetValidationGroupOnChildren(Me, value)
  ViewState("ValidationGroup") = value
 End Set
End Property

Private Sub SetValidationGroupOnChildren(ByVal parent As Control, ByVal validationGroup As String)
    For Each ctrl As Control In parent.Controls
        If TypeOf ctrl Is BaseValidator Then
            CType(ctrl, BaseValidator).ValidationGroup = validationGroup
        ElseIf TypeOf ctrl Is IButtonControl Then
            CType(ctrl, IButtonControl).ValidationGroup = validationGroup
        ElseIf ctrl.HasControls() And ctrl.Visible = True Then
            SetValidationGroupOnChildren(ctrl, validationGroup)
        End If
    Next
End Sub

Если вам нужны различные группы валидации в вашем UserControlВышеупомянутая рекурсивная функция не будет работать, тогда вы можете назначить ее вручную из codebehind.Например, поместив идентификатор UserControl (может быть достаточно) или ClientID перед свойствами ValidationGroup соответствующих элементов управления.Хорошее место, где вы могли бы вызвать эту функцию, было бы PreRender.

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