ValidationSummary не работает, если указан ValidationGroup - PullRequest
5 голосов
/ 06 июля 2011

У меня есть несколько разделов на странице ASP.NET, и мне нужно проверить их отдельно.

Каждый раздел имеет свой собственный раздел сводки проверки, поэтому я подумал об использовании тега ValidationSummary с атрибутом ValidationGroup, но он не работает.

Следующий код работаетно проверяет все элементы управления на странице:

<asp:TextBox ID="field1" runat="server" TabIndex="1" MaxLength="20" />
<asp:RequiredFieldValidator ID="field1RequiredValidator" ControlToValidate="field1" runat="server"
Display="None" ErrorMessage="mandatory 1" />

<asp:TextBox ID="field2" runat="server" TabIndex="2" MaxLength="20" />
<asp:RequiredFieldValidator ID="field2RequiredValidator" ControlToValidate="field2" runat="server"
Display="None" ErrorMessage="mandatory 2" />

....

<asp:ValidationSummary ID="validationSummary" HeaderText="Sumary" runat="server" />

Хотя следующее не работает (без проверки, при отправке я просто перехожу на следующую страницу в мастере):

<asp:TextBox ID="field1" runat="server" TabIndex="1" MaxLength="20" />
<asp:RequiredFieldValidator ID="field1RequiredValidator" ControlToValidate="field1" runat="server"
Display="None" ErrorMessage="mandatory 1" ValidationGroup="xxxx" />

<asp:TextBox ID="field2" runat="server" TabIndex="2" MaxLength="20" />
<asp:RequiredFieldValidator ID="field2RequiredValidator" ControlToValidate="field2" runat="server"
Display="None" ErrorMessage="mandatory 2" ValidationGroup="xxxx" />

....

<asp:ValidationSummary ID="validationSummary" HeaderText="Sumary" runat="server" ValidationGroup="xxxx" />

Чего мне здесь не хватает?Нужна ли дополнительная настройка или что-то еще?

1 Ответ

15 голосов
/ 06 июля 2011

Поведение по умолчанию в ASP.NET заключается в том, что, когда пользователь нажимает кнопку, для которой не указано ValidationGroup (а для CausesValidation установлено значение true), все элементы управления проверкой, которые не принадлежат группе проверки, ПРОВЕРЯЕМЫЕ.

Следовательно, для проверки определенной группы вам необходимо установить свойство ValidationGroup кнопки, которое должно вызывать проверку (а также, возможно, свойство CausesValidation).

Подробную информацию и пример см. В документации MSDN для Button.ValidationGroup .

РЕДАКТИРОВАТЬ: Если вам нужно проверить ВСЕ группы на странице, самый простой способ, конечно, вообще не использовать группы проверки. Однако если вы хотите проверить только некоторые (но более одной) группы, вы можете сделать это на сервере (в обработчике нажатия кнопки), вызвав:

Validate("groupOne");
Validate("groupTwo");
// ...

Обратите внимание, что это не вызовет проверку на стороне клиента. См., Например, этот пост , где обсуждается запуск нескольких групп проверки одним нажатием кнопки.

РЕДАКТИРОВАТЬ: я нашел сообщение в блоге , описывающее, как создать многократно используемую «кнопку нескольких групп проверки» для ASP.NET, дополненную кодом. Не пробовал, но выглядит многообещающе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...