Bur*_*urt 5 asp.net validation user-controls
我在页面上有两个用户控件实例.两者都有字段和一个提交按钮.
我在字段和验证器上设置了验证组,但出于某种原因验证了两个用户控件的验证器.
这种方法也有效:
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
Run Code Online (Sandbox Code Playgroud)
您只需要ValidationGroup手动设置值.
ValidationGroup您可以在 UserControl 中公开您将从页面设置的属性。该值应存储在 ViewState 中,以便 UserControl 的每个实例都会获得不同的 ValidationGroups(如果您的页面分配不同)。
例如:
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
Run Code Online (Sandbox Code Playgroud)
如果您在 UserControl 中需要不同的 ValidationGroup,则上述递归函数将不起作用,那么您可以从代码隐藏中手动分配它。例如,将 UserControl 的 ID(可能就足够了)或 ClientID 放在相应控件的 ValidationGroup 属性前面。调用此函数的好地方是PreRender.
| 归档时间: |
|
| 查看次数: |
4247 次 |
| 最近记录: |