Puede exponer una propiedad ValidationGroup
en su UserControl que establecería desde la Página. Este valor debe almacenarse en ViewState, para que cada instancia de UserControl obtenga diferentes ValidationGroups (si su página asigna diferentes).
Por ejemplo:
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
Si necesita diferentes ValidationGroups en su UserControl la función recursiva anterior no funciona, entonces se podría asignar manualmente de codebehind. Por ejemplo, colocando la ID de UserControl (podría ser suficiente) o ClientID frente a las propiedades ValidationGroup de los controles correspondientes. Un buen lugar donde podría llamar a esta función sería PreRender
.
¿Podría mostrarnos su código? – Teletha