【发布时间】:2018-10-23 10:46:27
【问题描述】:
我在我的 Asp.Net 项目中使用登录入口
我使用validationSummary 作为用户名和密码。
一切顺利,但是。
我想知道ValidationSummary 在出现错误窗口之前是否有错误要显示给我
我使用 vb.net 来构建项目
我没有要显示的代码。而且我在互联网上找不到任何相关的东西来帮助我解决这个问题。
【问题讨论】:
标签: asp.net vb.net vb.net-2010
我在我的 Asp.Net 项目中使用登录入口
我使用validationSummary 作为用户名和密码。
一切顺利,但是。
我想知道ValidationSummary 在出现错误窗口之前是否有错误要显示给我
我使用 vb.net 来构建项目
我没有要显示的代码。而且我在互联网上找不到任何相关的东西来帮助我解决这个问题。
【问题讨论】:
标签: asp.net vb.net vb.net-2010
您可能在 Razor 视图中使用 ValidationSummary method,这 - 根据 MSDN
返回ModelStateDictionary 对象中验证消息的无序列表(ul 元素)。
因此,如果您想知道ValidationSummary 方法是否会显示任何错误,您可以在将响应发送到浏览器之前在控制器中检查此ModelStateDictionary。描述了这样做,即here (in C#)。
在您的控制器方法中,如果您想知道是否会显示任何错误,您可以访问ModelState.IsValid。
这确实直接回答了您的问题,但从大局来看,这可能不是实现您想要的最佳方式。如果您想在控制器中登录失败时做一些特别的事情,您应该直接检查登录是否失败,而不是其他方法是否添加了模型错误。要提供可能更准确的答案,您需要澄清您的问题并添加有关您具体想要做什么的更多详细信息,并可能还添加一些代码。
【讨论】:
使用我发布的代码的想法终于正确了。
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"
非常感谢那些帮助解决这个难题的人
【讨论】: