Проблема с ответом CAbbott заключается в том, что ошибки проверки, которые происходят в «родительской» группе, не будут отображаться после вызова для проверки «дочерней» группы. Более незначительная проблема с ответом Олега состоит в том, что проверка «дочерней» группы не произойдет, пока «родительская» группа не будет готова.
Все, что нам действительно нужно сделать, чтобы разрешить проверку на стороне клиента более чем одной группы одновременно, - это переопределить метод Javascript IsValidationGroupMatch, который определяет, следует ли включать элемент управления в текущий проверяемый набор.
Например:
(function replaceValidationGroupMatch() {
// If this is true, IsValidationGroupMatch doesn't exist - oddness is afoot!
if (!IsValidationGroupMatch) throw "WHAT? IsValidationGroupmatch not found!";
// Replace ASP.net's IsValidationGroupMatch method with our own...
IsValidationGroupMatch = function(control, validationGroup) {
if (!validationGroup) return true;
var controlGroup = '';
if (typeof(control.validationGroup) === 'string') controlGroup = control.validationGroup;
// Deal with potential multiple space-delimited groups being validated
var validatingGroups = validationGroup.split(' ');
for (var i = 0; i < validatingGroups.length; i++) {
if (validatingGroups[i] === controlGroup) return true;
}
// Control's group not in any being validated, return false
return false;
};
} ());
// You can now validate against multiple groups at once, for example:
// space-delimited list. This would validate against the Decline group:
//
// Page_ClientValidate('Decline');
//
// while this would validate against the Decline, Open and Complete groups:
//
// Page_ClientValidate('Open Decline Complete');
//
// so if you wanted to validate all three upon click of a button, you'd do:
<asp:Button ID="yourButton" runat="server"
OnClick="ButtonSave_Click" CausesValidation="false"
OnClientClick="return Page_ClientValidate('Open Decline Complete');" />