Сводка проверки не получает сообщение об ошибке в группе

У меня есть несколько обязательных полей и регулярных выражений в моей форме. Проверка запускается нажатием кнопки. При нажатии кнопки сообщения об ошибках показывают, где объявлены asp:RequiredField, а не в сводке проверки. Вот мой код:

Резюме валидации:

<asp:ValidationSummary id="mySummary" DisplayMode="List" HeaderText="Error:" EnableClientScript="true" ShowSummary="true" runat="server" ValidationGroup="valGroup" />

Обязательные поля / регулярное выражение:

<!-- Required -->
<asp:RequiredFieldValidator ID="reqField1" ControlToValidate="txtSomething" ErrorMessage="Something is required" runat="server" Display="Static" InitialValue="" ValidationGroup="valGroup" />
<!-- Regex -->
<asp:RegularExpressionValidator runat="server" id="regexField1" ControlToValidate="txtSomething" 
    ErrorMessage="Something in the wrong format."  ValidationExpression="^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$" ValidationGroup="valGroup">
</asp:RegularExpressionValidator>

Кнопка:

<asp:LinkButton ID="btnValidate" runat="server" CausesValidation="True" ValidationGroup="valGroup" >Validate</asp:LinkButton>

Какие-либо предложения?


person Barry Tormey    schedule 20.05.2013    source источник
comment
Находится ли ваша сводка проверки внутри какого-либо другого элемента, который не позволяет ее отображать? Ваш код выглядит нормально.   -  person MikeSmithDev    schedule 20.05.2013
comment
Нет, если бы это было так, я бы не смог увидеть сообщения об ошибках по адресу, потому что они перешли бы к сводке проверки. В моем случае ошибки отображаются, но не в сводном поле.   -  person Barry Tormey    schedule 20.05.2013
comment
Я имел в виду, что ваше резюме проверки находится в div с display:none; или что-то в этом роде. Это никак не повлияет на другие сообщения об ошибках. Если отображаются ваши сообщения об ошибках, то ваши сводные сообщения также должны отображаться ... что заставило меня задуматься, отображается ли оно где-то, а вы его просто не видите.   -  person MikeSmithDev    schedule 20.05.2013
comment
Ой! Да, похоже, это отображается в div с display:none. Но я не уверен, почему? Однако, когда я редактирую стиль в CSS с помощью Firebug, он по-прежнему не показывает ошибок в сводке.   -  person Barry Tormey    schedule 20.05.2013
comment
Ну, сам div, который генерирует код, может изначально иметь _1 _... просто интересно, находится ли он внутри созданного вами элемента, который также является display:none. Но да, при проверке элемента после сбоя проверки в чем-то вроде firebug вы должны увидеть этот фактический внутренний текст независимо от того, скрыт он или нет (не как исходный код) ... поэтому, если вы этого не видите ... Я НЕ ЗНАЮ.   -  person MikeSmithDev    schedule 20.05.2013


Ответы (1)


Трудно сказать по этому поводу, так как мне кажется, что он настроен правильно. Единственный способ отладки - это проверить коллекцию Page.Validators, найти там валидаторы и убедиться, что IsValid неверно для этих парней. Все, что делает ValidationSummary, - это проверяет эту коллекцию, и для любой с соответствующей группой проверки, если свойство IsValid имеет значение false, добавляет ее в отображаемый список.

person Brian Mains    schedule 20.05.2013
comment
Спасибо, Брайан, я изучил это, и все группы проверки одинаковы между кнопкой, валидаторами и сводкой. Свойство isValid валидаторов имеет значение false для недействительных. Это меня действительно озадачивает ... - person Barry Tormey; 20.05.2013
comment
Я могу понять, почему тогда, потому что, если это настроено, тогда да, оно должно работать ... следующее, что нужно попробовать, - это отключить клиентский скрипт и посмотреть, правильно ли он проверяется при обратной передаче на стороне сервера, чтобы увидеть, является ли это клиентом - проблема с проверкой на стороне ... - person Brian Mains; 20.05.2013