验证摘要

Validation Summary

我在我的 Asp.Net 项目中使用登录入口
我使用 validationSummary 作为用户名和密码。
一切顺利但是。
我想知道 ValidationSummary 在出现错误 window
之前是否有错误要显示给我 我使用 vb.net 构建项目
我没有任何代码可以显示。而且我在互联网上找不到任何相关的东西来帮助我解决这个问题。

您可能在 Razor 视图中使用 ValidationSummary method,根据 MSDN

Returns an unordered list (ul element) of validation messages in the ModelStateDictionary object.

所以,如果你想知道 ValidationSummary 方法是否会显示任何错误,你可以检查这个 ModelStateDictionary in your controller before delivering your response to the browser. Doing this is described i.e. here (in C#).

在您的控制器方法中,如果您想知道是否会显示任何错误,您可以访问 ModelState.IsValid

这确实直接回答了您的问题,但从更大的角度来看,这可能不是实现您想要的目标的最佳方式。如果您想在控制器中登录失败时做一些特殊的事情,您应该直接检查登录是否失败,而不是其他方法是否添加了模型错误。要提供可能更切题的答案,您需要澄清您的问题并添加更多关于您具体想要做什么的详细信息,并可能还添加一些您的代码。

我post使用代码的想法终于正确了。

Public Sub IsGroupValid(ByVal sValidationGroup As String, ByVal sender As Object, ByVal e As EventArgs)
    For Each validator As BaseValidator In Validators
        If validator.ValidationGroup = sValidationGroup Then
            Dim fValid As Boolean = validator.IsValid
            Dim CtrlToValidate As String = validator.ControlToValidate
            validator.DataBind()

            If Not fValid And CtrlToValidate = ServerHandler.UName Then
                validator.Validate()
                fValid = validator.IsValid
                ModelState.AddModelError(CtrlToValidate, validator.ID)
            ElseIf Not fValid And CtrlToValidate = "Password" And validator.ID = ServerHandler.PwdRq Then
                validator.Validate()
                fValid = validator.IsValid
                ModelState.AddModelError(CtrlToValidate, validator.ID)
            ElseIf Not fValid And CtrlToValidate = "Password" And validator.ID = ServerHandler.PwdRegEx Then
                validator.Validate()
                fValid = validator.IsValid
                ModelState.AddModelError(CtrlToValidate, validator.ID)
            End If
        End If
    Next
End Sub

但条件是某人或某物将来自 ValidationSummaryGroup
的错误列表提供给他 这是通过以下代码完成的

Public Function LoadModel(ByVal sender As Object, ByVal e As EventArgs) As Boolean
    Dim retVal As New Boolean
    Try
        If Not ModelState.IsValid Then
            Dim result As StringBuilder = New StringBuilder()

            For Each item In ModelState
                Dim key As String = item.Key
                Dim errors = item.Value.Errors

                For Each [vError] In errors
                    ModelAnswer.Add(key & "^" & [vError].ErrorMessage)
                    retVal = True
                Next
            Next
        End If
        ModelState.Clear()
    Catch ex As Exception
        Environment.AssemblyInfo.ErrorAnswer = ServerHandler.ErrHandler.GetError(3, Nothing, Nothing, ex, Nothing)
        Environment.AssemblyInfo.ErrorAnswer = Environment.AssemblyInfo.ErrorAnswer & "\r\n ifExistConsistencyRecord "
        ServerHandler.ErrProperty._InnerError = Environment.AssemblyInfo.ErrorAnswer
        Environment.AssemblyInfo.errorCall = True
        retVal = False

    End Try
    Return retVal
End Function

当然 ModelAnswer 是一个 ArrayList 并声明为 Public
所有这一切都在非常基本的先决条件下,所有进程都在主页内工作,而不是在 "class"

非常感谢帮助解决这个难题的人