Вы можете выставить свойство 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
.