2009-06-11 13 views
11

Nehmen wir an, die Seite TestPage.aspx hat zwei Steuerelemente. Das erste Steuerelement ist eine Adressensteuerung, die eine Validierungsgruppe mit dem Namen "AddressGroup" aufweist. Diese Gruppe enthält mehrere Validierungssteuerelemente, die in der Validierungszusammenfassung für dieses Steuerelement zusammengefasst sind. Die zweite Kontrolle ist eine Kreditkartenkontrolle und hat eine Validierungsgruppe namens "CreditCardGroup". Es hat auch mehrere Prüfer und eine Zusammenfassung, um die Ergebnisse anzuzeigen. Um das Problem zu ergänzen, gibt es einige zufällige Steuerelemente auf der Seite, die auch über Validatoren verfügen, die an ein drittes ValidatorSummary-Steuerelement gebunden sind.Mehrere Validierungsgruppen mit einer einzigen Schaltfläche auslösen?

Wenn der Benutzer die Schaltfläche "Alles ausführen" drückt, möchte ich, dass die Seite alle drei Validierungsgruppen auslöst. Die Schaltfläche selbst kann an eine einzelne Gruppe oder eine nicht markierte Gruppe gebunden sein. Es kann, soweit ich weiß, nicht an mehrere Gruppen gebunden sein.

Die Lösung besteht nicht darin, die Validierung aus den Steuerelementen zu extrahieren, da dies den Wert, sie in separaten Steuerelementen zu haben, verringern würde. Danke für deine Gedanken.

Antwort

5

Sprechen Sie auf der Clientseite oder auf der Serverseite? Jamies Antwort ist genau richtig für die Serverseite, aber für die clientseitige Validierung müssen Sie wahrscheinlich Ihre eigene JS-Funktion schreiben, die die Validierung für alle drei Gruppen in Concert auslöst.

+7

Für JS, könnten Sie Page_ClientValidate() aufrufen, wird dies auslösen Validierung auf allen Gruppen in Seite. – Ahmed

12

Rufen Sie die Validate-Methode für jede Prüfgruppe einzeln innerhalb der Click-Handler der Schaltfläche:

bool isValidTest = false; 
Validate("AddressGroup"); 
isValidTest = IsValid; 
Validate("CreditCardGroup"); 
isValidTest &= IsValid; 
// etc. 
if (!isValidTest) return; 

Das nächste Problem auftreten können, ist, dass die Validation Steuerung auf eine einzige Validierungsgruppe verknüpft ist. Die einzige Möglichkeit, alle Fehlermeldungen für mehrere Gruppen anzuzeigen (ohne die Kontrollstruktur zu durchlaufen), besteht in der Verwendung mehrerer ValidationSummary-Steuerelemente.

Mit Benutzersteuerelementen möchten Sie möglicherweise, dass die Validate-Methode die Validierung für alle enthaltenen Steuerelemente durchführt und eine eigene Zusammenfassung anzeigt.

Bearbeitet hinzufügen: Die isValidTest-Variable wird nicht benötigt. Nach der Dokumentation:

Beachten Sie, dass, wenn Sie die Validate Methode aufrufen, so weit die IsValid Eigenschaft spiegelt die Gültigkeit aller Gruppen validiert.

2

Anruf Page.Validate() auf Server-Seite wird es alle Validatoren bestätigen ..

Verwandte Themen