Using the built in .NET validation, you can assign a 'validation group' to a set of validation controls, submit buttons and validation summary.
This creates a separation between different sets of controls on the page, so that only the relevant controls are validated for a specific submit button.
When you design your application as separate user control components, you may want to set a different validation group on the validators of the user control, depending on the context.
To allow this, I have exposed a 'ValidationGroup' property on the user control. This subsequently makes a recursive to all its child controls to set the validation group of all the validators.
This way, you can set the validation group of the user control instance as you would any other control and it will assign all of its contained validators to that group.
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