Как вы определяете, какой валидатор не прошел? - PullRequest
27 голосов
/ 01 августа 2011

Я работаю со страницей и получаю Page.IsValid = false и пытаюсь определить, какой элемент управления вызывает проблему проверки.

Ответы [ 4 ]

20 голосов
/ 04 июня 2014

Кредит за Стивен за этот ответ, но мне пришлось внести некоторые изменения, чтобы он работал следующим образом. Validators.Where () имел некоторые проблемы.

using System.Linq;

List<IValidator> errored = this.Validators.Cast<IValidator>().Where(v => !v.IsValid).ToList();
19 голосов
/ 01 августа 2011

В коде (page_load) вы можете сделать это:(согласно MSDN: http://msdn.microsoft.com/en-US/library/dh9ad08f%28v=VS.80%29.aspx)

If (Me.IsPostBack) Then
    Me.Validate()
    If (Not Me.IsValid) Then
        Dim msg As String
        ' Loop through all validation controls to see which 
        ' generated the error(s).
        Dim oValidator As IValidator
        For Each oValidator In Validators
            If oValidator.IsValid = False Then
                msg = msg & "<br />" & oValidator.ErrorMessage
            End If
        Next
        Label1.Text = msg
    End If
End If

В разметке вы можете ...

  • Вы можете поместить "текст" в свой валидатор (например, звездочку ...)
  • Или использовать элемент управления validation_summary (который требует сообщения об ошибке в вашем валидаторе) ...
2 голосов
/ 14 апреля 2017

Принятый ответ позволяет найти сообщение проверки проверки, которая не прошла.Если вы хотите найти ID элемента управления, который не прошел проверку, его можно получить, приведя валидатор к BaseValidator , который предоставляет свойство ControlToValidate.Например:

For Each v As BaseValidator In Page.Validators
    If Not v.IsValid Then
        ' You can see the control to validate name and error message here.
        Debug.WriteLine(v.ControlToValidate)
        Debug.WriteLine(v.ErrorMessage)
    End If
Next
1 голос
/ 26 марта 2014

Чтобы проверить, какой Validator запускается, просто проверьте HTML в Firebug, и если какой-либо из Validator не имеет свойства display:none; или имеет visibility:visible в своих свойствах, то именно он вызывает Page.IsValid false.

...