【问题标题】:Validation Summary验证摘要
【发布时间】:2018-10-23 10:46:27
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

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

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

    因此,如果您想知道ValidationSummary 方法是否会显示任何错误,您可以在将响应发送到浏览器之前在控制器中检查此ModelStateDictionary。描述了这样做,即here (in C#)

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

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

    【讨论】:

    • Georg Jung 在 ModelState.IsValid 中的答案是真的,无论我有没有错误。
    【解决方案2】:

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

    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"

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

    【讨论】:

      猜你喜欢
      • 2011-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-29
      • 2011-01-28
      • 1970-01-01
      相关资源
      最近更新 更多