【问题标题】:Clear Required Field Validation Group清除必填字段验证组
【发布时间】:2015-01-15 01:15:47
【问题描述】:

我的网页中有 14 个字段;对于所有这些,我使用RequiredFieldValidator。
这个验证器适用于所有领域。当我遇到错误时,它会缓存它并将其显示到正确的错误消息区域。
在此区域中,我有一个按钮,用于清除消息并返回输入页面。
缓存一两个错误后,我按重置按钮返回第一页……纠正错误……然后继续。
当我将变量传递给所有字段(这意味着一切都很好)时,通常必须更改验证器并传递陷阱(我的代码中有),其中没有错误消息...
这是陷阱代码...

If Not String.IsNullOrEmpty(RegisterValidationSummary.ValidationGroup) Then
                RegisterValidationSummary.Visible = True
                ErrorPanel.Visible = True
                btnClr.Visible = True
                Return
 End If

但是没有陷阱再次工作并将我返回到错误区域而没有任何错误显示。
只有重置按钮,错误列表为空。
为了确保清除所有错误,我在重置按钮中使用了以下

Private Sub ClearValidators(sender As Object, e As EventArgs)
        RegisterValidationSummary.ValidationGroup = String.Empty

    End Sub

此时验证器已清除且陷阱无​​法正常工作...问题是...即使我的页面中是否存在某些错误也会发生这种情况。
因此,我使用以下代码再次启用验证器。

For t = 0 To RegisterValidationSummary.Page.Validators.Count - 1
                RegisterValidationSummary.Page.Validators.Item(t).Validate()
Next

验证器未启用,当然陷阱也不起作用。

是否有人知道发生了什么以及我如何从验证器中删除某些错误...并再次启用以再次验证字段?

【问题讨论】:

    标签: asp.net vb.net validation


    【解决方案1】:

    你做错了验证。首先ValidationGroup 用于对验证进行分组,因此在一个按钮中单击您可以验证该组中的字段。所有服务器控件都具有此属性,因此您可以通过在此属性中使用相同的文本将它们组合在一起进行验证。检查此属性中的值不会表明您的控件中的值是否有效。

    所以下面的条件总是True

    If Not String.IsNullOrEmpty(RegisterValidationSummary.ValidationGroup) Then
    

    因此,您会一直看到重置按钮。

    并且,通过执行以下操作,您将从 ValidationGroup 中删除 RegisterValidationSummary 控件。

    RegisterValidationSummary.ValidationGroup = String.Empty
    

    因此,在此之后,您将不会看到任何错误消息,因为验证组中没有 ValidationSummary 来显示错误消息的摘要。

    希望我已经解释了为什么您会看到您现在看到的内容。好的,既然我们知道了这个问题,我们现在可以轻松解决它。

    你应该这样做。基本上我们应该利用Page.Validate()If (Page.IsValid) Then条件来检查ValidationGroup中的所有字段是否都有效。

    Page.Validate()
    If (Page.IsValid) Then
        ' If this condition is true that means all your fields have correct values
    Else
        ' If this condition is true some of your fields are invalid. You can see that in the Validation summary message. 
        ' Not sure why you do the reset but your reset logic could go here
        RegisterValidationSummary.Visible = True
        ErrorPanel.Visible = True
        btnClr.Visible = True
    
    End If
    

    希望这有助于解决您的问题。

    【讨论】:

    • 亲爱的@Sam 您的回答很精彩,有两个原因 A) 仅用两个词解释了验证工作。 B) 给我一个解决方案;指出问题的核心。非常感谢你。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-23
    • 2013-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多