我在Asp.Net项目中使用登录入口
我使用validationSummary
作为用户名和密码。
一切顺利,但是。
我想知道的是在出现错误窗口之前,ValidationSummary
是否有错误显示给我
我使用vb.net来构建项目
我没有要显示的代码。而且,在Internet上我找不到任何亲戚可以帮助我解决这个问题。
答案 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
当然ModelAnswer
是ArrayList
,并声明为Public
所有这一切都是在非常基本的前提下完成的,所有流程都可以在主页中进行,而不能在"class"
非常感谢帮助解决这个难题的人