2009-07-28 10 views
23

Gibt es eine Methode, die ich aufrufen kann, die einen booleschen Wert davon abruft, ob eine bestimmte ValidationGroup gültig ist oder nicht? Ich möchte nicht die Validierungsnachricht oder Zusammenfassung tatsächlich anzeigen - ich will nur wissen, ob es gültig ist oder nicht.Überprüfen, ob eine ValidationGroup von Code-Behind gültig ist

Etwas wie:

Page.IsValid("MyValidationGroup") 

Antwort

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 Sie können auch 'Page.GetValidators (" ")' verwenden, was den Code ein wenig vereinfachen würde. – James

4

Try this:

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

nicht genau das, was Sie wollen, aber hoffentlich schließen.

+0

Also wird Page.Validate meine ValidationSummary anzeigen? –

+0

Sie müssen die Validierungszusammenfassung programmatisch deaktivieren/ausblenden, wenn Sie diese Lösung auf diese Weise verwenden möchten. –

32

Haben Sie versucht, die Page.Validate(string) Methode zu verwenden? Basierend auf der Dokumentation sieht es so aus, als ob es das sein könnte, was Sie wollen.

Beachten Sie, dass die Validatoren auf dem Steuerelement, das auch das Postback verursachte, ebenfalls ausgelöst werden. Snip aus dem MSDN-Artikel ...

Die Validate-Methode validiert die angegebene Validierungsgruppe . Nach auf einer Prüfgruppe die Validate-Methode aufrufen, die IsValid Methode wird return true beide nur, wenn die angegebene Validierungsgruppe und die Prüfgruppe der Steuer dass die Seite verursacht die Server sind gebucht werden gültig.

+0

Es ist erwähnenswert, dass dies Validierungsmeldungen zu fehlgeschlagenen Validierungen anzeigen wird. – modiX

3

Page.IsValid wird falsch sein, wenn eine der validierten Validierungsgruppen ungültig war. Wenn Sie eine Gruppe überprüfen möchten und den Status zu sehen, versuchen:

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

Pavel Antwort funktioniert, ist aber nicht die einfachste. Hier ist, wie ich es gelöst habe:

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; 
    } 
Verwandte Themen