Lefteris Gkinis
Lefteris Gkinis

Reputation: 1259

Validation Summary

I use a login entrance in my Asp.Net project
And I use validationSummary for User Name and password.
Everything goes well but.
What I want is to know if the ValidationSummary has errors to show me or not before the appearance of the errors window
I use vb.net to build the project
I don't have any code to show. And also I can't find anything relative in on the Internet to assist me on this issue.

Upvotes: 0

Views: 159

Answers (2)

Lefteris Gkinis
Lefteris Gkinis

Reputation: 1259

The idea to use the code I post is finally correct.

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

But has condition that someone or something give him the error list from ValidationSummaryGroup
And this is done with the following code

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

Of course ModelAnswer is an ArrayList and declared as Public
And all this under the very basic prerequisite, all the processes to work within the main page and NOT in a "class"

Thank you very much for those who helped to solve this puzzle

Upvotes: 0

Georg Jung
Georg Jung

Reputation: 1167

You are probably using the ValidationSummary method in your Razor views, which - as per MSDN

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

So, if you want to know if there will be any errors shown by the ValidationSummary method, you can check this ModelStateDictionary in your controller before delivering your response to the browser. Doing this is described i.e. here (in C#).

In your controller method you can access ModelState.IsValid if you want to know if there are any errors which will be displayed.

This does directly answer your question, but this might not be the optimal way to achieve what you want when looking at the bigger picture. If you want to i.e. do something special if the login fails in your controller you should check directly if the login failed, not if some other method added model errors. To provide an answer, which might be more on point, you need to clarify your question and add more details about what you specifically want to do and possibly add some of your code too.

Upvotes: 1

Related Questions