清除必填字段验证组

时间:2014-11-18 00:08:55

标签: asp.net vb.net validation

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

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

验证器未启用,当然陷阱无效。

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

1 个答案:

答案 0 :(得分:1)

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

因此以下条件始终为True

If Not String.IsNullOrEmpty(RegisterValidationSummary.ValidationGroup) Then

因此,您始终会看到重置按钮。

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

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

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