验证摘要
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"
非常感谢帮助解决这个难题的人
我在我的 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"
非常感谢帮助解决这个难题的人