2009-07-28 17 views

Respuesta

14
protected bool IsGroupValid(string sValidationGroup) 
{ 
    foreach (BaseValidator validator in Page.Validators) 
    { 
     if (validator.ValidationGroup == sValidationGroup) 
     { 
     bool fValid = validator.IsValid; 
     if (fValid) 
     { 
      validator.Validate(); 
      fValid = validator.IsValid; 
      validator.IsValid = true; 
     } 
     if (!fValid) 
      return false; 
     } 

    } 
    return true; 
} 
+2

+1 También puede usar 'Page.GetValidators (" ")' que simplificaría el código un poco. – James

4

Prueba esto:

Page.Validate("MyValidationGroup"); 
if (Page.IsValid) 
{ 
    //Continue with your logic 
} 
else 
{ 
    //Display errors, hide controls, etc. 
} 

No es exactamente lo que quiere, pero es de esperar cerca.

+0

Así se Page.Validate porque mi ValidationSummary para mostrar? –

+0

Debería deshabilitar/ocultar mediante programación el resumen de validación si desea utilizar esta solución de esa manera. –

32

¿Ha intentado utilizar el método Page.Validate(string)? Según la documentación, parece que puede ser lo que desea.

Page.Validate("MyValidationGroup"); 
if (Page.IsValid) 
{ 
    // your code here. 
} 

Tenga en cuenta que los validadores en el control que también causó la devolución de datos también se disparará. Recortar del artículo de MSDN ...

El método Validate valida el grupo de validación especificado . Después llamando al método Validar en un grupo de validación , el método IsValid devolverá true sólo si tanto el grupo de validación especificado y el grupo validación del control que causó que la página se publicarán en el servidor son válidos.

+0

Vale la pena mencionar que esto mostrará los mensajes de validación en las validaciones fallidas. – modiX

3

Page.IsValid habrá falso si cualquiera de los grupos de validación validados era válido. Si desea validar un grupo y ver el estado, trate de:

protected bool IsGroupValid(string sValidationGroup) 
    { 
     Page.Validate(sValidationGroup); 
     foreach (BaseValidator validator in Page.GetValidators(sValidationGroup)) 
     { 
      if (!validator.IsValid) 
      { 
       return false; 
      } 
     } 
     return true; 
    } 
6
var isValidGroup = Page 
        .GetValidators(sValidationGroup) 
        .Cast<IValidator>() 
        .All(x => x.IsValid); 
1

obras respuesta de Pavel, pero no es el más simple. Aquí es cómo lo resolví:

protected Boolean validateGroup(String validationGroupName) { 
     Boolean isGroupValid = true; 

     foreach (BaseValidator validatorControl in Page.GetValidators(validationGroupName)) { 
      validatorControl.Validate(); 

      if (!validatorControl.IsValid) 
       isGroupValid = false; 
     } 

     if (!isGroupValid) 
      return false; 
     else 
      return true; 
    } 
Cuestiones relacionadas