验证摘要

时间:2018-10-23 10:46:27

标签: asp.net vb.net vb.net-2010

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

2 个答案:

答案 0 :(得分:1)

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

  

返回ModelStateDictionary对象中的验证消息的无序列表(ul元素)。

因此,如果您想知道ValidationSummary方法是否显示任何错误,可以在将响应传递给浏览器之前在控制器中检查此ModelStateDictionary。描述here (in C#)

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

这确实可以直接回答您的问题,但是这可能不是实现大图时实现所需目标的最佳方法。如果要在控制器中登录失败的情况下进行一些特殊操作,则应直接检查登录是否失败,而不是其他方法是否添加了模型错误。要提供一个可能更切合实际的答案,您需要澄清您的问题,并添加有关您特别想做的事情的更多详细信息,并且可能还添加一些代码。

答案 1 :(得分:0)

使用我发布的代码的想法最终是正确的。

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

当然ModelAnswerArrayList,并声明为Public
所有这一切都是在非常基本的前提下完成的,所有流程都可以在主页中进行,而不能在"class"

中进行

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