加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – 用户控制验证组问题

发布时间:2020-12-16 00:03:26 所属栏目:asp.Net 来源:网络整理
导读:我在页面上有两个用户控件实例.两者都有字段和一个提交按钮. 我已经在字段和验证器上设置了验证组,但出于某种原因验证了两个用户控件的验证器. 解决方法 您可以在UserControl中公开要从Page设置的属性ValidationGroup.此值应存储在ViewState中,以便UserContr
我在页面上有两个用户控件实例.两者都有字段和一个提交按钮.

我已经在字段和验证器上设置了验证组,但出于某种原因验证了两个用户控件的验证器.

解决方法

您可以在UserControl中公开要从Page设置的属性ValidationGroup.此值应存储在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

> http://www.craigwardman.com/blog/index.php/2009/05/setting-a-validation-group-on-a-user-control/
> http://justgeeks.blogspot.com/2009/09/be-careful-using-hard-coded.html

如果在UserControl中需要不同的ValidationGroup,则上述递归函数将不起作用,然后您可以从代码隐藏中手动分配它.例如,将UserControl的ID(可能已足够)或ClientID放在相应控件的ValidationGroup属性之前.你可以调用这个函数的好地方是PreRender.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读