Validierung in Wisej.NET
Jede Geschäftsanwendung steht und fällt mit den Daten, die Menschen eingeben. Dieser Einsteigerkurs zeigt Ihnen, wie Sie diese Eingaben auf die Wisej.NET-Art validieren: Fehler schon während der Bearbeitung erkennen, sie in verständlicher Sprache erklären und sicherstellen, dass fehlerhafte Daten nie gespeichert werden – alles rund um das Projekt ValidationClinic mit einem Formular zur Kundenaufnahme und einem bearbeitbaren Kontakt-Grid. Die sieben Module beginnen mit dem Validierungs-Lebenszyklus – Validating, Validated, e.Cancel, AutoValidate und ValidateChildren – und gehen dann über Feedback mit ErrorProvider und sichtbare Zusammenfassungen, den Validation-Extender mit seinen integrierten Regeln bis zu eigener Validierung mit wiederverwendbaren Services und ValidationRule-Klassen. Danach validieren Sie das Modell selbst mit Data Binding, DataAnnotations und IDataErrorInfo, prüfen Zellen und Zeilen im DataGridView und schließen im Abschlussprojekt mit einer vollständigen Speicher-Pipeline und einem eigenen Error-Provider ab. Der Kurs richtet sich an Entwicklerinnen und Entwickler, die grundlegendes C# beherrschen und gerade beginnen, Formulare mit Wisej.NET zu erstellen.
Formulare, Grids und datengebundene Editoren verständlich validieren – Events, ErrorProvider, Validierungsregeln, Modellfehler und Grid-Zellen.
- Niveau: Beginner
- Dauer: 8 Stunden
- Module: 7
Lehrplan
Modul 1: Grundlagen der Validierung in Wisej.NET
Modul 1 von Validierung in Wisej.NET – Formulare, Grids und datengebundene Editoren erstellen, die Eingaben verständlich validieren und niemals fehlerhafte Daten speichern. Lesen Sie den Lektionsleitfaden und den Lab- und Prüfungsleitfaden, sehen Sie sich den Video-Walkthrough zu den Grundlagen der Validierung an, bestehen Sie den Wissenstest und schließen Sie dann das praktische Lab in ValidationClinic ab.
- LektüreLektionsleitfaden · 14 Min.
Was Validierung in einer serverseitigen Wisej.NET-UI bedeutet: der Lebenszyklus aus Validating und Validated, das Abweisen ungültiger Eingaben mit e.Cancel, das Fokusverhalten von AutoValidate, CausesValidation auf Abbrechen-Buttons und ValidateChildren als Schutz vor dem Speichern. Was das für Entwickler bedeutet, die grundlegendes C# beherrschen und mit der Formularentwicklung in Wisej.NET beginnen – und wie Sie dieses Modul am besten durcharbeiten.
- LektüreLab- und Prüfungsleitfaden · 10 Min.
Was Sie im praktischen Lab bauen, das vorgeschlagene Vorgehen und die geforderten Ergebnisse.
- VideolektionWann die Validierung läuft und was ein fehlerhaftes Speichern verhindert · 14 Min.
Wann die Validierung läuft und was ein fehlerhaftes Speichern verhindert – ein geführter Video-Walkthrough zu Modul 1, Schritt für Schritt in ValidationClinic aufgebaut. Läuft direkt hier im Player.
Transkript der Sprecherstimme
Erstellen Sie das Aufnahmeformular ValidationClinic um zwei Möglichkeiten herum, Fehler zu erkennen: wenn der Benutzer ein Feld verlässt und wenn der Benutzer speichert. In Wisej.NET arbeiten diese Prüfungen zusammen, sodass ein unberührtes Feld der Validierung nicht entgehen kann.
Führen Sie im Validating-Ereignis Schnellprüfungen durch, bevor der Benutzer fortfährt. Der Browser meldet die Fokusänderung, aber Ihr C sharp-Handler wird auf dem Server ausgeführt. Wenn Sie diesen Handler kurz halten, wird vermieden, dass sich die normale Navigation langsam anfühlt.
Verwenden Sie „Validating“, um zu entscheiden, ob der Wert akzeptabel ist. Sagen Sie die Veranstaltung ab und erklären Sie das Problem, wenn dies nicht der Fall ist. „Validated“ folgt nur einer erfolgreichen Prüfung und ist daher der geeignete Ort für eine Bereinigung, z. B. das Kürzen eines akzeptierten Namens.
Legen Sie das AutoValidate-Verhalten des Formulars in seinem Konstruktor fest. In jedem Handler erklärt SetError einen abgelehnten Wert und e.Cancel lehnt ihn ab. Löschen Sie die Meldung nach der Korrektur, damit die Schnittstelle den aktuellen Wert und nicht einen früheren Fehler anzeigt.
Konzentrieren Sie sich weiterhin auf ein ungültiges Feld, wenn der Benutzer es korrigieren muss. Geben Sie „Cancel“ einen separaten Fluchtweg, indem Sie CausesValidation auf „false“ setzen. Andernfalls könnte die Validierung verhindern, dass jemand ein unvollständiges Formular verlässt.
Bevor Sie dem Kunden schreiben, rufen Sie ValidateChildren von Save aus an. Dadurch werden auch Felder überprüft, die der Benutzer nie besucht hat. Wenn ein Handler die Validierung abbricht, stoppen Sie den Speichervorgang. Nur akzeptierte Werte sollten den Schreibvorgang und seine Ausnahmebehandlung erreichen.
Achten Sie darauf, dass der leere Name den Fokus behält, während das Fehlersymbol erklärt, warum. Nach der Korrektur wird der akzeptierte Name gekürzt. Die fehlerhafte E-Mail wird unabhängig zurückgewiesen, während „Abbrechen“ das Formular weiterhin schließt, ohne dass eines der Felder korrigiert werden muss.
Testen Sie Speichern, bevor Sie das E-Mail-Feld berühren. ValidateChildren findet die fehlende Eingabe und verhindert den Schreibvorgang, obwohl dort keine Fokusänderung stattgefunden hat. Korrigieren Sie die Adresse und speichern Sie sie erneut, um zu bestätigen, dass eine gültige Eingabe dem erfolgreichen Pfad folgt.
Verbinden Sie für dieses Labor die Feldvalidierung, die Bereinigung erfolgreicher Werte und die abschließende Speicherprüfung in einem Aufnahmeformular. Testen Sie Abbrechen auch mit ungültiger Eingabe. In Ihrer Labornotiz sollte erläutert werden, wie diese Pfade fehlerhafte Daten verhindern, ohne den Benutzer in die Falle zu locken.
- LektüreKI-Coding-Übung · 20 Min.
Erstellen Sie das Beispielprojekt ValidationClinic dieses Moduls mit ChatGPT oder Claude aus einem fertigen Prompt, der das Modell auf die Spezifikation des Moduls verweist – und prüfen, starten und erweitern Sie dann, was Sie erhalten, auch im Vergleich mit unserem eigenen Referenz-Build auf GitHub.
- WissenstestWissenstest – Modul 1 · 10 Min. · Bestehensgrenze 80%
- Praktisches LabLab – Validating, Validated und ein abgesichertes Speichern · 45 Min.
Ziel: Legen Sie in ValidationClinic das Formular zur Kundenaufnahme mit den TextBoxen txtName und txtEmail, einem Speichern-Button und einem Abbrechen-Button an. Hängen Sie Validating-Handler an, die e.Cancel = true setzen und eine ErrorProvider-Meldung ausgeben, wenn der Name leer ist oder die E-Mail-Adresse kein @ enthält, die Meldung bei einem gültigen Wert wieder entfernen und den Namen in seinem Validated-Handler trimmen. Legen Sie den AutoValidate-Modus des Formulars fest, sorgen Sie dafür, dass Abbrechen keine Validierung auslöst, damit der Benutzer das Formular jederzeit verlassen kann, und rufen Sie ValidateChildren() am Anfang von btnSave_Click auf, damit das Speichern abbricht, sobald ein Feld ungültig ist. Schließen Sie mit einer kurzen Lab-Notiz ab, die das gewählte Fokusverhalten erklärt. Ergebnisse: Formular zur Kundenaufnahme mit txtName und txtEmail, einem Speichern-Button und einem Abbrechen-Button; Validating-Handler, die für einen leeren Namen und eine ungültige E-Mail-Adresse e.Cancel = true und eine Fehlermeldung setzen; Validated-Handler, der den akzeptierten Namen trimmt; Speichern-Handler, der ValidateChildren() aufruft und abbricht, wenn es false zurückgibt; Lab-Notiz, die den gewählten AutoValidate-Modus nennt und erklärt, warum Abbrechen auch bei einem ungültigen Formular funktioniert.
Modul 2: Programmatische Validierung und Feedback mit ErrorProvider
Modul 2 von Validierung in Wisej.NET – Formulare, Grids und datengebundene Editoren erstellen, die Eingaben verständlich validieren und niemals fehlerhafte Daten speichern. Lesen Sie den Lektionsleitfaden und den Lab- und Prüfungsleitfaden, sehen Sie sich den Video-Walkthrough zum Feedback mit ErrorProvider an, bestehen Sie den Wissenstest und schließen Sie dann das praktische Lab in ValidationClinic ab.
- LektüreLektionsleitfaden · 14 Min.
Ein ErrorProvider pro Formular, SetError und das Zurücksetzen von Fehlern pro Control, InvalidMessage für einfaches lokales Feedback, ein kleiner FieldValidation-Ergebnistyp, der Regeln aus der UI heraushält, und eine sichtbare Validierungszusammenfassung, damit kein Fehler davon abhängt, dass jemand mit der Maus über ein Icon fährt. Was das für Entwickler bedeutet, die grundlegendes C# beherrschen und mit der Formularentwicklung in Wisej.NET beginnen – und wie Sie dieses Modul am besten durcharbeiten.
- LektüreLab- und Prüfungsleitfaden · 10 Min.
Was Sie im praktischen Lab bauen, das vorgeschlagene Vorgehen und die geforderten Ergebnisse.
- VideolektionSymbole, Meldungen und eine Zusammenfassung, die niemand übersieht · 14 Min.
Symbole, Meldungen und eine Zusammenfassung, die niemand übersieht – ein geführter Video-Walkthrough zu Modul 2, Schritt für Schritt in ValidationClinic aufgebaut. Läuft direkt hier im Player.
Transkript der Sprecherstimme
Geben Sie dem Kontaktformular Feedback, das auch nach dem ersten Fehler nützlich bleibt. Ein ErrorProvider verwaltet die Symbole, wiederverwendbare Helfer entscheiden, welche Werte ungültig sind, und eine sichtbare Zusammenfassung ermöglicht es Benutzern, jedes Problem gemeinsam zu überprüfen.
Trennen Sie die Überprüfung eines Werts von der Anzeige seines Fehlers. Unabhängige Feldhandler können veraltete Symbole hinterlassen oder nicht verwandte Nachrichten löschen. Durch einen gemeinsamen Ansatz wirkt sich jede Korrektur auf den relevanten Bereich aus und behält gleichzeitig Probleme bei, die noch Aufmerksamkeit erfordern.
Wählen Sie aus, wie jede Nachricht den Benutzer erreicht. SetError fügt neben einer Eingabe ein Symbol hinzu, während InvalidMessage den eigenen Tooltip des Steuerelements bereitstellt. Die Zusammenfassung stellt lesbaren Text für das gesamte Formular bereit, sodass Fehler nicht nur durch Bewegen des Mauszeigers erkannt werden können.
Konfigurieren Sie ein einzelnes ErrorProvider für das Formular, mit stabilen Symbolen auf der rechten Seite. Lassen Sie ValidateEmail ein FieldValidation-Ergebnis zurückgeben, anstatt die Steuerelemente zu ändern. Durch diese Trennung bleibt die Regel wiederverwendbar und die Darstellung bleibt dem Formular überlassen.
Apply verarbeitet jedes Ergebnis, auch erfolgreiche. Eine leere Nachricht entfernt das alte Symbol dieses Feldes; Ungültige Ergebnisse werden ebenfalls in die Zusammenfassung eingetragen. Durch die Rückgabe, ob alle Ergebnisse bestanden wurden, erhält Save eine klare Entscheidung, bevor Daten geschrieben werden.
Ordnen Sie das Feedback dem Problem zu. Platzieren Sie eine Feldkorrektur neben der Eingabe, erläutern Sie eine Geschäftsregel in der Speicherzusammenfassung und geben Sie einem Systemfehler eine eigene freundliche Nachricht. Benutzer sollten verstehen, welche Aktion ihnen zur Verfügung steht.
Speichern Sie das Formular mit den drei ungültigen Kontaktfeldern. Vergleichen Sie die lokalen Symbole mit der Zusammenfassung: Beide sollten die gleichen verbleibenden Probleme beschreiben. Der Tooltip des Kundencodes demonstriert den alternativen Anzeigepfad, ohne die formularweite Erklärung zu ersetzen.
Korrigieren Sie nur die E-Mail und lassen Sie dieses Feld stehen. Das Symbol und der Zusammenfassungseintrag verschwinden, der Name und die Telefonnachrichten bleiben jedoch erhalten. Dies zeigt, warum einzelne Ergebnisse einzelne Fehler löschen müssen, anstatt den gesamten Anbieter zu löschen.
Erstellen Sie die Helfer, das gemeinsame ErrorProvider und die Apply-Methode als einen Feedbackpfad. Stellen Sie sicher, dass durch die Korrektur eines Felds andere Fehler erhalten bleiben. Vergleichen Sie den Kundencode InvalidMessage mit den Symbolen und der Zusammenfassung, um zu erklären, wann jede Präsentation nützlich ist.
- LektüreKI-Coding-Übung · 20 Min.
Erstellen Sie das Beispielprojekt ValidationClinic dieses Moduls mit ChatGPT oder Claude aus einem fertigen Prompt, der das Modell auf die Spezifikation des Moduls verweist – und prüfen, starten und erweitern Sie dann, was Sie erhalten, auch im Vergleich mit unserem eigenen Referenz-Build auf GitHub.
- WissenstestWissenstest – Modul 2 · 10 Min. · Bestehensgrenze 80%
- Praktisches LabLab – ErrorProvider, Hilfsmethoden und eine Validierungszusammenfassung · 45 Min.
Ziel: Machen Sie aus dem Kontaktformular von ValidationClinic ein Formular mit programmatischer Validierung. Legen Sie für das Formular einen ErrorProvider mit gesetztem ContainerControl, NeverBlink und rechtsbündigem Icon an, schreiben Sie einen FieldValidation-Record sowie die Hilfsmethoden ValidateName, ValidateEmail und ValidatePhone, die eine Meldung zurückgeben, statt die UI anzufassen, und eine Apply-Methode, die für jedes Ergebnis SetError aufruft und ein validationSummaryLabel füllt, das nur sichtbar ist, solange Fehler bestehen. Verwenden Sie InvalidMessage am Feld für die Kundennummer, um die beiden Feedback-Varianten zu vergleichen, und stellen Sie sicher, dass das Korrigieren eines Feldes nur dessen eigenen Fehler entfernt. Ergebnisse: ErrorProvider auf Formularebene mit konfiguriertem ContainerControl, BlinkStyle und Icon-Ausrichtung; FieldValidation-Record und die Hilfsmethoden ValidateName, ValidateEmail und ValidatePhone; Apply-Methode, die den Fehler jedes Controls setzt oder entfernt und zurückgibt, ob alle Felder gültig sind; validationSummaryLabel, das jedes aktuelle Problem auflistet und ausgeblendet ist, wenn es keine gibt; ein Feld, das InvalidMessage statt ErrorProvider verwendet, mit einer Notiz, die beide vergleicht.
Modul 3: Integrierte Validierungsregeln und der Validation-Extender
Modul 3 von Validierung in Wisej.NET – Formulare, Grids und datengebundene Editoren erstellen, die Eingaben verständlich validieren und niemals fehlerhafte Daten speichern. Lesen Sie den Lektionsleitfaden und den Lab- und Prüfungsleitfaden, sehen Sie sich den Video-Walkthrough zum Validation-Extender an, bestehen Sie den Wissenstest und schließen Sie dann das praktische Lab in ValidationClinic ab.
- LektüreLektionsleitfaden · 14 Min.
Der Validation-Extender von Wisej.NET: die erweiterte Eigenschaft ValidationRules zur Entwurfszeit, SetValidationRules zur Laufzeit, die Regeln Required, Email, Integer, Decimal, Currency, Telephone und Regex, eine Regelreihenfolge, die beim ersten Fehler stoppt, sowie ErrorProvider oder Label als Anzeigeziel. Was das für Entwickler bedeutet, die grundlegendes C# beherrschen und mit der Formularentwicklung in Wisej.NET beginnen – und wie Sie dieses Modul am besten durcharbeiten.
- LektüreLab- und Prüfungsleitfaden · 10 Min.
Was Sie im praktischen Lab bauen, das vorgeschlagene Vorgehen und die geforderten Ergebnisse.
- VideolektionRegeln einmal deklarieren und vom Extender prüfen lassen · 14 Min.
Regeln einmal deklarieren und vom Extender prüfen lassen – ein geführter Video-Walkthrough zu Modul 3, Schritt für Schritt in ValidationClinic aufgebaut. Läuft direkt hier im Player.
Transkript der Sprecherstimme
Verschieben Sie die wiederholten Feldregeln in den Validation Extender. In Wisej.NET ermöglicht die Beschreibung der Anforderungen jedes Feldes dem Extender, konsistente Prüfungen für ValidationClinic durchzuführen, während das Formular weiterhin dafür verantwortlich ist, dem Benutzer nützliches Feedback zu präsentieren.
Der Extender stellt eine Verbindung zu „Validating“ und „Validated“ auf den Steuerelementen her. Anstatt dieselbe Leerwertprüfung in mehreren Handlern zu wiederholen, fügen Sie jedem Feld Regelmetadaten hinzu. Der Ereignisablauf bleibt vertraut, während die Definitionen einfacher zu teilen sind.
Wählen Sie eine integrierte Regel für die Art von Wert, den Sie akzeptieren, z. B. E-Mail, Ganzzahl, Währung oder Telefonnummer. Verwenden Sie einen regulären Ausdruck, wenn das erforderliche Muster dies erfordert. Geben Sie jeder Regel einen InvalidMessage, der die Korrektur in der Sprache des Benutzers erklärt.
Fügen Sie im Designer die Validierung hinzu und öffnen Sie dann die ValidationRules-Sammlung eines Steuerelements. Setzen Sie „Erforderlich“ vor „E-Mail“. Die Sammlungsreihenfolge ist auch die Ausführungsreihenfolge. Die Anordnung dieser Einträge bestimmt also, welche Erklärung der Benutzer zuerst erhält.
Ein Regelfehler stoppt die verbleibenden Regeln und bricht die Validierung ab. Aus diesem Grund sollte eine leere E-Mail fehlschlagen. Zuerst erforderlich: Nach einer fehlenden Adresse zu fragen ist sinnvoller, als ein Formatproblem zu melden, bevor eine Adresse vorhanden ist.
Die Laufzeitkonfiguration folgt demselben Regelmodell. Erstellen Sie die Arrays einmal in ClinicRules, wählen Sie das Anzeigeziel aus und weisen Sie dann jedes Feld über SetValidationRules zu. Durch das Zusammenhalten der Definitionen werden geringfügig unterschiedliche Kopien derselben Regel in verschiedenen Formularen vermieden.
Vergleichen Sie eine leere Adresse, eine fehlerhafte Adresse und eine gültige Adresse. Jeder Versuch sollte nur den ersten zutreffenden Fehler erzeugen. Wenn der Wert gültig wird, werden sowohl das Symbol als auch der Zusammenfassungseintrag gelöscht, um zu bestätigen, dass die Präsentation dem letzten Validierungsergebnis folgt.
Die Regeln können Feedback an die Steuerung, einen ErrorProvider oder ein Label senden. Wählen Sie das Ziel bewusst aus und aktualisieren Sie dann die Zusammenfassung anhand der Ereignisse des Extenders. Dadurch bleibt die Zusammenfassung mit den tatsächlich durchgeführten Prüfungen synchronisiert.
Ersetzen Sie die wiederholten Handler durch gemeinsam genutzte ClinicRules-Definitionen. Behalten Sie zuerst „Erforderlich“ bei und verknüpfen Sie die Zusammenfassung mit den Ereignissen des Extenders. Ihr Test sollte zeigen, dass leere, fehlerhafte und korrigierte Werte die entsprechende Meldung erzeugen, ohne veraltete Rückmeldungen beizubehalten.
- LektüreKI-Coding-Übung · 20 Min.
Erstellen Sie das Beispielprojekt ValidationClinic dieses Moduls mit ChatGPT oder Claude aus einem fertigen Prompt, der das Modell auf die Spezifikation des Moduls verweist – und prüfen, starten und erweitern Sie dann, was Sie erhalten, auch im Vergleich mit unserem eigenen Referenz-Build auf GitHub.
- WissenstestWissenstest – Modul 3 · 10 Min. · Bestehensgrenze 80%
- Praktisches LabLab – Regeln, Regelreihenfolge und Anzeigeziele · 45 Min.
Ziel: Ersetzen Sie die handgeschriebenen Feld-Handler in ValidationClinic durch den Validation-Extender. Fügen Sie dem Aufnahmeformular eine Validation-Komponente und einen ErrorProvider hinzu, setzen Sie ContainerControl und validation.ErrorProvider und rufen Sie dann SetValidationRules in einer Methode ConfigureValidationRules auf: Required und danach Email auf txtEmail, Required und danach Integer auf txtAge, Required und danach Telephone auf txtPhone, Currency auf txtCreditLimit und eine Regex-Regel für die Kundennummer. Setzen Sie Required überall an die erste Stelle, damit die hilfreichste Meldung gewinnt, hängen Sie sich an das Validating-Event des Extenders, um die Zusammenfassung zu aktualisieren, und verschieben Sie die Regel-Arrays in eine kleine wiederverwendbare Hilfsklasse, damit ein anderes Formular dieselbe Konfiguration anwenden kann. Ergebnisse: Validation-Komponente, die mit dem Formular und einem ErrorProvider als Anzeigeziel verbunden ist; Methode ConfigureValidationRules, die SetValidationRules für E-Mail, Alter, Telefon, Kreditlimit und Kundennummer aufruft; Required-Regel an erster Stelle auf jedem Pflichtfeld, mit verständlichem InvalidMessage-Text; Validating-Handler des Extenders, der die Validierungszusammenfassung mit den Regeln synchron hält; wiederverwendbare Hilfsklasse für die Regelkonfiguration, die ein zweites Formular aufrufen kann.
Modul 4: Eigene Validierung: Methoden, Services und ValidationRule-Klassen
Modul 4 von Validierung in Wisej.NET – Formulare, Grids und datengebundene Editoren erstellen, die Eingaben verständlich validieren und niemals fehlerhafte Daten speichern. Lesen Sie den Lektionsleitfaden und den Lab- und Prüfungsleitfaden, sehen Sie sich den Video-Walkthrough zur eigenen Validierung an, bestehen Sie den Wissenstest und schließen Sie dann das praktische Lab in ValidationClinic ab.
- LektüreLektionsleitfaden · 14 Min.
Geschäftsregeln, die die integrierten Regeln nicht ausdrücken können: Validierungsmethoden, die einen String zurückgeben, ein ContactValidator-Service, der sich ohne UI testen lässt, eine eigene ValidationRule-Klasse mit OnValidating, OnValidated und OnControlCreated sowie feldübergreifende Regeln, die jedes beteiligte Control markieren. Was das für Entwickler bedeutet, die grundlegendes C# beherrschen und mit der Formularentwicklung in Wisej.NET beginnen – und wie Sie dieses Modul am besten durcharbeiten.
- LektüreLab- und Prüfungsleitfaden · 10 Min.
Was Sie im praktischen Lab bauen, das vorgeschlagene Vorgehen und die geforderten Ergebnisse.
- VideolektionVon Einzelprüfungen zu wiederverwendbaren, testbaren Regeln · 14 Min.
Von Einzelprüfungen zu wiederverwendbaren, testbaren Regeln – ein geführter Video-Walkthrough zu Modul 4, Schritt für Schritt in ValidationClinic aufgebaut. Läuft direkt hier im Player.
Transkript der Sprecherstimme
Modul vier. Benutzerdefinierte Validierung in Wisej.NET. Ein Formular kann korrekt formatierte Werte akzeptieren, die dennoch gegen Geschäftsregeln verstoßen. Lasst uns das beheben.
Integrierte Regeln überprüfen die Form eines Werts. Ein gültiges Datum kann jedoch immer noch nach einem Enddatum liegen, und ein gültiges Geburtsdatum kann zu einer zu jungen Person gehören. Das sind Geschäftsregeln. Wenn Sie Felder vergleichen, ein Alter berechnen oder Werte gemeinsam überprüfen, schreiben Sie eine benutzerdefinierte Validierungsregel.
Die benutzerdefinierte Validierung hat drei Häuser. Erstens eine Methode, die eine Fehlermeldung zurückgibt. Zweitens ein Dienst, der ValidationMessage-Datensätze zurückgibt. Drittens eine von ValidationRule abgeleitete Klasse, die der Validierungs-Extender ausführt. Wählen Sie das Zuhause, das der Verantwortung Ihrer Herrschaft entspricht.
ValidateStartEndDates gibt eine leere Zeichenfolge zurück, wenn die Daten gültig sind, oder eine Fehlermeldung, wenn dies nicht der Fall ist. Wenden Sie dieselbe Nachricht auf beide Datumsauswahlfelder an. Der ContactValidator-Dienst ist nicht von Steuerelementen abhängig. Es validiert das Modell, sodass Sie die Geschäftslogik ohne die Benutzeroberfläche testen können.
MinimumAgeValidationRule leitet sich von ValidationRule ab. Die Methode OnValidating gibt „true“ oder „false“ zurück. Hängen Sie die Regel mit SetValidationRules an die Geburtsdatumsauswahl an. ApplyModelValidation verbindet Serviceergebnisse mit dem Bildschirm. Es ordnet Feldnamen Steuerelementen zu, sodass jede Meldung angezeigt wird, in der der Benutzer das Problem beheben kann.
Der Save-Handler führt die Validierung der Reihe nach aus. Überprüfen Sie zunächst die Feldregeln. Führen Sie dann den Validierungsdienst und die Datumsregel aus. Kehren Sie frühzeitig zurück, wenn eine Schicht ausfällt. Rufen Sie das Repository erst auf, nachdem jede Prüfung erfolgreich war. Die Datenbank sollte niemals Daten empfangen, die Ihre Validierung bereits abgelehnt hat.
Versuchen Sie nun, das Startdatum nach dem Enddatum zu speichern. Beide Picker zeigen den gleichen Fehler und in der Zusammenfassung wird eine einzige Meldung angezeigt.
Korrigieren Sie das Enddatum. Beide Fehler werden gemeinsam behoben. Da diese Regel zwei Werte vergleicht, teilen sich beide Steuerelemente das Feedback.
Geben Sie ein Geburtsdatum ab 21 Uhr ein. Die Mindestalterregel lehnt dies ab, sobald der Benutzer den Picker verlässt.
Korrigieren Sie das Geburtsdatum und der Fehler wird gelöscht. „Jetzt speichern“ führt alle Validierungsebenen erfolgreich durch und speichert den Kontakt dann genau einmal.
Implementieren Sie für Labor vier die Datumsprüfung, den Validierungsdienst, die Nachrichtenzuordnung und die Mindestalterregel.
Verbinden Sie sie in einem Save-Handler, der niemals ungültige Daten speichert.
- LektüreKI-Coding-Übung · 20 Min.
Erstellen Sie das Beispielprojekt ValidationClinic dieses Moduls mit ChatGPT oder Claude aus einem fertigen Prompt, der das Modell auf die Spezifikation des Moduls verweist – und prüfen, starten und erweitern Sie dann, was Sie erhalten, auch im Vergleich mit unserem eigenen Referenz-Build auf GitHub.
- WissenstestWissenstest – Modul 4 · 10 Min. · Bestehensgrenze 80%
- Praktisches LabLab – Validator-Service und eine eigene ValidationRule · 45 Min.
Ziel: Ergänzen Sie ValidationClinic in drei Schritten um eigene Validierung. Schreiben Sie ValidateStartEndDates als Methode, die bei gültigen Werten einen leeren String und eine Meldung zurückgibt, wenn das Startdatum nach dem Enddatum liegt, und setzen Sie diese Meldung sowohl auf dtpStart als auch auf dtpEnd. Verschieben Sie die Regeln für Name, E-Mail und Geburtsdatum in einen ContactValidator-Service, der eine Liste von ValidationMessage-Records zurückgibt, und ordnen Sie in ApplyModelValidation jeden Feldnamen wieder seinem Control zu. Legen Sie dann MinimumAgeValidationRule als Ableitung von ValidationRule mit einer Eigenschaft MinimumAge an, überschreiben Sie OnValidating, um das Alter aus dem DateTimePicker zu berechnen, hängen Sie die Regel über den Validation-Extender an dtpBirthDate und führen Sie den Service in btnSave_Click aus, bevor irgendetwas gespeichert wird. Ergebnisse: Methode ValidateStartEndDates, die denselben Fehler auf beide Datumsauswahlen setzt und bei der Korrektur beide zurücksetzt; ContactValidator-Service, der ValidationMessage-Records für Name, E-Mail und Geburtsdatum liefert; Methode ApplyModelValidation, die jeden Feldnamen seinem Control und der Zusammenfassung zuordnet; Klasse MinimumAgeValidationRule, die OnValidating überschreibt und an dtpBirthDate hängt; Speichern-Handler, der zuerst die Feldregeln, dann den Validator-Service ausführt und erst danach speichert.
Modul 5: Validierung gebundener Daten und Modellfehler
Modul 5 von Validierung in Wisej.NET – Formulare, Grids und datengebundene Editoren erstellen, die Eingaben verständlich validieren und niemals fehlerhafte Daten speichern. Lesen Sie den Lektionsleitfaden und den Lab- und Prüfungsleitfaden, sehen Sie sich den Video-Walkthrough zur Validierung gebundener Daten an, bestehen Sie den Wissenstest und schließen Sie dann das praktische Lab in ValidationClinic ab.
- LektüreLektionsleitfaden · 14 Min.
Das Modell validieren, nicht nur die Controls: BindingSource und EndEdit, DataAnnotations mit Validator.TryValidateObject ausführen, MemberNames wieder den Controls zuordnen, IDataErrorInfo mit einem datengebundenen ErrorProvider, BindToDataAndErrors und die sichere Reihenfolge beim Speichern. Was das für Entwickler bedeutet, die grundlegendes C# beherrschen und mit der Formularentwicklung in Wisej.NET beginnen – und wie Sie dieses Modul am besten durcharbeiten.
- LektüreLab- und Prüfungsleitfaden · 10 Min.
Was Sie im praktischen Lab bauen, das vorgeschlagene Vorgehen und die geforderten Ergebnisse.
- VideolektionDas Modell bestimmen lassen, was gültig ist · 14 Min.
Das Modell bestimmen lassen, was gültig ist – ein geführter Video-Walkthrough zu Modul 5, Schritt für Schritt in ValidationClinic aufgebaut. Läuft direkt hier im Player.
Transkript der Sprecherstimme
Modul fünf. Datengebundene Validierung in Wisej.NET. Das Aufnahmeformular bearbeitet nun ein Kontaktbearbeitungsmodell. Seine grundlegenden Validierungsregeln gehören zu den Daten, sodass dieselben Regeln das Formular, das Raster und andere Möglichkeiten zum Ändern eines Kontakts schützen können.
Ein Formularhandler schützt nur Änderungen, die über dieses Formular vorgenommen werden. Ein Raster, ein Import oder ein Dienst kann denselben Kontakt aktualisieren, ohne diese Handler auszuführen. Legen Sie die Grundregeln für das Modell fest und lassen Sie sie dann von jedem Speicherpfad ausführen, bevor Sie die Daten akzeptieren.
Beenden Sie zunächst die aktuelle Bearbeitung. Der Wert, der noch eingegeben wird, hat das Modell möglicherweise noch nicht erreicht. Rufen Sie vor der Validierung End Edit für die Kontaktbindungsquelle auf. Andernfalls könnte der Validator einen älteren Wert prüfen, obwohl der Benutzer das Feld bereits korrigiert hat.
Datenanmerkungen beschreiben die Regeln, sie werden jedoch nicht selbst ausgeführt. Versuchen Sie Validate Object, wendet sie an und sammelt die Ergebnisse. Setzen Sie „Alle Eigenschaften validieren“ auf „true“. Ohne diese Option wird nur „Erforderlich“ überprüft, sodass eine fehlerhafte E-Mail oder ein außerhalb des zulässigen Bereichs liegendes Alter passieren könnte.
Der Validator gibt Eigenschaftsnamen zurück, keine Steuerelemente. Verwenden Sie eine Feldkarte, um jedes Ergebnis mit der richtigen Eingabe zu verbinden. Platzieren Sie die Nachricht neben dieser Eingabe und in der Zusammenfassung. Wenn für eine Eigenschaft kein passendes Steuerelement vorhanden ist, behalten Sie die Meldung in der Zusammenfassung bei, damit der Fehler weiterhin sichtbar ist.
Es gibt einen anderen Ansatz. Ein Modell, das I Data Error Info implementiert, beantwortet Validierungsfragen für jede Eigenschaft. Ein datengebundener Fehleranbieter liest diese Antworten. Beim Wechseln der Quellen zur Laufzeit setzt „Bind To Data And Errors“ die Quelle und das Mitglied zusammen und vermeidet so eine vorübergehende Nichtübereinstimmung.
Versuchen Sie, den ungültigen Kontakt zu speichern. End Edit übergibt zunächst die aktuelle Eingabe an das Modell. Die Anmerkungsprüfungen lehnen Name, E-Mail und Alter ab. Die Feldzuordnung platziert jede Nachricht neben ihrer Eingabe und in der Zusammenfassung. Der Speicherpfad stoppt, bevor etwas geschrieben wird.
Korrigieren Sie die Werte und speichern Sie erneut. Die Prüfungen bestehen nun und der Kontakt ist gespeichert. Beim I Data Error Info-Modell führt das Löschen des Namens durch die Datenbindung dazu, dass das Fehlersymbol wieder angezeigt wird. Für diese Änderung muss das Formular „Set Error“ nicht aufrufen.
Binden Sie für Labor fünf den Editor an das Modell, schließen Sie die Bearbeitungen vor der Validierung ab und ordnen Sie die Anmerkungsergebnisse den Feldern und der Zusammenfassung zu. Verbinden Sie dann das I Data Error Info-Modell über „Bind To Data And Errors“. Stellen Sie sicher, dass ungültige Daten niemals das Repository erreichen.
- LektüreKI-Coding-Übung · 20 Min.
Erstellen Sie das Beispielprojekt ValidationClinic dieses Moduls mit ChatGPT oder Claude aus einem fertigen Prompt, der das Modell auf die Spezifikation des Moduls verweist – und prüfen, starten und erweitern Sie dann, was Sie erhalten, auch im Vergleich mit unserem eigenen Referenz-Build auf GitHub.
- WissenstestWissenstest – Modul 5 · 10 Min. · Bestehensgrenze 80%
- Praktisches LabLab – DataAnnotations, IDataErrorInfo und EndEdit · 45 Min.
Ziel: Binden Sie das Aufnahmeformular von ValidationClinic über eine contactBindingSource an ein ContactEditModel und versehen Sie dessen Eigenschaften Name, Email und Age mit den Annotationen Required, StringLength, EmailAddress und Range. Rufen Sie in btnSave_Click zuerst contactBindingSource.EndEdit() auf, führen Sie Validator.TryValidateObject mit validateAllProperties auf true aus und ordnen Sie den Member-Namen jedes ValidationResult über eine Feldzuordnung und die Validierungszusammenfassung seinem Control zu. Implementieren Sie dann IDataErrorInfo auf einem zweiten Modell, richten Sie den ErrorProvider mit BindToDataAndErrors auf die Binding-Source aus und zeigen Sie, dass dieselben Fehler über Data Binding erscheinen, ohne handgeschriebenen SetError-Aufruf. Ergebnisse: ContactEditModel mit DataAnnotations, über eine BindingSource an das Formular gebunden; Speichern-Handler, der EndEdit aufruft, bevor Validator.TryValidateObject läuft; Feldzuordnung, die Member-Namen aus ValidationResult in Control-Fehler und Zeilen der Zusammenfassung umsetzt; IDataErrorInfo-Modell, dessen Fehler über einen datengebundenen ErrorProvider erscheinen; Aufruf von BindToDataAndErrors, wenn sich die Datenquelle des Providers zur Laufzeit ändert.
Modul 6: Zellvalidierung und Zeilenfehler im DataGridView
Modul 6 von Validierung in Wisej.NET – Formulare, Grids und datengebundene Editoren erstellen, die Eingaben verständlich validieren und niemals fehlerhafte Daten speichern. Lesen Sie den Lektionsleitfaden und den Lab- und Prüfungsleitfaden, sehen Sie sich den Video-Walkthrough zur Grid-Validierung an, bestehen Sie den Wissenstest und schließen Sie dann das praktische Lab in ValidationClinic ab.
- LektüreLektionsleitfaden · 14 Min.
Validierung im Grid: CellValidating mit RowIndex, ColumnIndex und dem noch nicht übernommenen FormattedValue, CellValidated zum Aufräumen, ErrorText der Zelle gegenüber ErrorText der Zeile, DataError mit ThrowException auf false sowie Regeln für neue und gebundene Zeilen, die das Bearbeiten nicht blockieren. Was das für Entwickler bedeutet, die grundlegendes C# beherrschen und mit der Formularentwicklung in Wisej.NET beginnen – und wie Sie dieses Modul am besten durcharbeiten.
- LektüreLab- und Prüfungsleitfaden · 10 Min.
Was Sie im praktischen Lab bauen, das vorgeschlagene Vorgehen und die geforderten Ergebnisse.
- VideolektionDie Zelle validieren, die der Benutzer gerade bearbeitet · 14 Min.
Die Zelle validieren, die der Benutzer gerade bearbeitet – ein geführter Video-Walkthrough zu Modul 6, Schritt für Schritt in ValidationClinic aufgebaut. Läuft direkt hier im Player.
Transkript der Sprecherstimme
Das Kontaktraster führt einen anderen Bearbeitungspfad ein als das Aufnahmeformular. Eine Zelle verfügt über einen eigenen Editor und eigene Validierungsereignisse. Verwenden Sie daher dieselbe Geschäftsabsicht über Raster-Handler wieder, anstatt zu erwarten, dass die Textfeld-Handler des Formulars ausgeführt werden.
Trennen Sie die drei Probleme, bevor Sie einen Handler auswählen. Das E-Mail-Format gehört zur Zelle, ein nicht numerisches Alter kann bei der Konvertierung fehlschlagen und ein geschlossener Kontakt ohne Abschlussdatum verstößt gegen eine feldübergreifende Regel. Eine Prüfung kann nicht alle drei zuverlässig erklären.
Überprüfen Sie während der Bearbeitung e.FormattedValue, da es enthält, was der Benutzer gerade eingibt. Der in der Zelle gespeicherte Value stellt immer noch die zuvor festgeschriebene Eingabe dar. Die Überprüfung dieses alten Werts könnte genau den Fehler akzeptieren, den der Benutzer gerade gemacht hat.
Verwenden Sie den Spaltennamen, um die Regel in CellValidating auszuwählen. Löschen Sie die vorherige Meldung dieser Zelle, überprüfen Sie den bearbeiteten Wert und brechen Sie mit einer klaren Erklärung ab, wenn der Vorgang fehlschlägt. Dadurch bleibt der Benutzer neben der Eingabe, die korrigiert werden muss.
Platzieren Sie einen Einzelwertfehler in der Zelle und einen Beziehungsfehler in der Zeile. Reservieren Sie DataError für Konvertierungs- oder Speicherfehler, die das Raster meldet. Überspringen Sie den Platzhalter für die neue Zeile, da es sich noch nicht um einen Kontakt handelt, der eine Validierung erfordert.
ValidateRow aktualisiert die Zeilennachricht und die Abschlussdatumszelle zusammen, wodurch die Beziehung auf beiden Ebenen sichtbar wird. Erklären Sie in DataError Konvertierungsfehler in normaler Sprache und protokollieren Sie die Ausnahme separat, damit die Diagnose nicht in die Verantwortung des Benutzers fällt.
Versuchen Sie es zunächst mit der fehlerhaften E-Mail: Die Validierung behält die Bearbeitung bei und zeigt den Zellenfehler an. Geben Sie dann Buchstaben für das Alter ein. Die freundliche Konvertierungsnachricht zeigt einen anderen Fehlerpfad, obwohl beide Fehler beim Bearbeiten einer Zelle aufgetreten sind.
Der geschlossene Kontakt kann immer noch nicht gespeichert werden, bis das erforderliche Abschlussdatum vorliegt. Durch den Zeilenfehler bleibt diese Beziehung sichtbar, während der Platzhalter ignoriert wird. Geben Sie das Datum ein und speichern Sie es erneut, um zu überprüfen, ob die Korrektur der Regel eine Persistenz zulässt.
Erstellen Sie die Rasterprüfungen um den aktuell bearbeiteten Wert, Zeilenbeziehungen und benutzerfreundliche Konvertierungsfehler herum. Beheben Sie erfolgreiche Zellfehler und schützen Sie Save vor verbleibenden Fehlern. Testen Sie jede Ebene einzeln, damit eine gültige Zelle eine ungültige Kontaktzeile nicht verbergen kann.
- LektüreKI-Coding-Übung · 20 Min.
Erstellen Sie das Beispielprojekt ValidationClinic dieses Moduls mit ChatGPT oder Claude aus einem fertigen Prompt, der das Modell auf die Spezifikation des Moduls verweist – und prüfen, starten und erweitern Sie dann, was Sie erhalten, auch im Vergleich mit unserem eigenen Referenz-Build auf GitHub.
- WissenstestWissenstest – Modul 6 · 10 Min. · Bestehensgrenze 80%
- Praktisches LabLab – Zellregeln, Zeilenfehler und DataError · 45 Min.
Ziel: Sorgen Sie dafür, dass das Kontakt-Grid von ValidationClinic fehlerhafte Daten zurückweist. Behandeln Sie gridContacts.CellValidating: Lesen Sie e.FormattedValue statt des Zellwerts, setzen Sie den ErrorText der Zelle zurück und weisen Sie dann einen leeren EmailColumn-Wert oder einen ohne @ sowie einen AgeColumn-Wert außerhalb von 0 bis 120 mit e.Cancel = true und einem ErrorText der Zelle ab. Ergänzen Sie eine Methode ValidateRow, die den ErrorText der Zeile und den Zellfehler von ClosedDateColumn setzt, wenn Status auf Closed steht, aber kein Abschlussdatum vorhanden ist, entfernen Sie veraltete Fehler in CellValidated und behandeln Sie DataError mit ThrowException = false, einer verständlichen Zellmeldung und einem Debug-Log der Exception. Überspringen Sie die Platzhalterzeile für neue Einträge, bis sie Benutzerdaten enthält, und blockieren Sie das Speichern, solange noch eine Zeile einen Fehler hat. Ergebnisse: CellValidating-Handler, der e.FormattedValue liest und die Spalten für E-Mail und Alter validiert; Methode ValidateRow, die für geschlossene Kontakte den ErrorText der Zeile und den Zellfehler für das Abschlussdatum setzt; CellValidated-Handler, der veraltete Zellfehler entfernt; DataError-Handler mit ThrowException = false, einer verständlichen Meldung und protokollierter Exception; Schutz beim Speichern, der die Platzhalterzeile überspringt und das Speichern verweigert, solange eine Zeile einen Fehler hat.
Modul 7: Validierungs-UX für die Produktion, eigene Error-Provider und Abschlussprojekt
Modul 7 von Validierung in Wisej.NET – Formulare, Grids und datengebundene Editoren erstellen, die Eingaben verständlich validieren und niemals fehlerhafte Daten speichern. Lesen Sie den Lektionsleitfaden und den Lab- und Prüfungsleitfaden, sehen Sie sich den Video-Walkthrough zur Speicher-Pipeline des Abschlussprojekts an, bestehen Sie den Wissenstest und schließen Sie dann das praktische Lab in ValidationClinic ab.
- LektüreLektionsleitfaden · 14 Min.
Alle Ebenen zusammenführen: eine unspektakuläre, wiederholbare Speicher-Pipeline, ein eigener IErrorProvider, der ein Zusammenfassungs-Panel füllt, Icon- und Zusammenfassungs-Provider nebeneinander, zehn UX-Regeln für die Validierung und das ValidationClinic-Abschlussprojekt, das zeigt, wohin jede Prüfung gehört. Was das für Entwickler bedeutet, die grundlegendes C# beherrschen und mit der Formularentwicklung in Wisej.NET beginnen – und wie Sie dieses Modul am besten durcharbeiten.
- LektüreLab- und Prüfungsleitfaden · 10 Min.
Was Sie im praktischen Lab bauen, das vorgeschlagene Vorgehen und die geforderten Ergebnisse.
- VideolektionEin Speichern-Button, alle Validierungsebenen · 14 Min.
Ein Speichern-Button, alle Validierungsebenen – ein geführter Video-Walkthrough zu Modul 7, Schritt für Schritt in ValidationClinic aufgebaut. Läuft direkt hier im Player.
Transkript der Sprecherstimme
Bringen Sie die ValidationClinic-Prüfungen in einen einzigen Speicherpfad. Feld-, Modell-, Geschäfts- und Netzvalidierung müssen jetzt in Wisej.NET zusammenarbeiten, sodass eine erfolgreiche Prüfung auf einer Ebene niemals ein ungelöstes Problem auf einer anderen Ebene umgeht.
Individuell korrekte Validatoren garantieren keine korrekte Speicherung. Eine ausstehende Bearbeitung kann dazu führen, dass das Modell veraltet ist, oder ein Rasterfehler erreicht möglicherweise nie die Formularprüfungen. Ordnen Sie die Phasen in einer festen Reihenfolge an und stellen Sie sicher, dass jede Phase erfolgreich ist.
Setzen Sie das Feedback zurück und beenden Sie die aktuelle Bearbeitung, bevor Sie Felder, das Modell, Geschäftsregeln und Rasterzeilen überprüfen. Stoppen Sie bei der ersten fehlgeschlagenen Stufe. Diese Reihenfolge verhindert, dass spätere Arbeiten mit ungültigen Eingaben ausgeführt werden, und sorgt dafür, dass der eventuelle Schreibvorgang hinter allen Prüfungen zurückbleibt.
Verwenden Sie den IErrorProvider-Vertrag, um Nachrichten zu senden, ohne die Validierung an eine Anzeige zu binden. SummaryErrorProvider behält eine Nachricht für jedes Steuerelement bei und verbirgt deren Beschriftung, wenn keine übrig bleibt. Die Zusammenfassung kann daher dieselben Fehler widerspiegeln wie das Feld-Feedback.
Kehren Sie frühzeitig zurück, wenn die Feld- oder Modellvalidierung fehlschlägt. Wenn die endgültige Speicherung fehlschlägt, unterscheiden Sie einen doppelten Namen, den der Benutzer korrigieren kann, von einem Systemfehler, den er nicht korrigieren kann. Leiten Sie das Duplikat in sein Feld weiter und erklären Sie andere Fehler ruhig.
Überprüfen Sie Feedback als Teil des Workflows, nicht nur als Fehlertext. Erklären Sie die Korrektur neben dem Feld und in der Zusammenfassung, behalten Sie „Abbrechen“ bei und halten Sie technische Spuren aus Benutzernachrichten fern. Testen Sie fehlende, ungültige, gültige und Grenzeingaben.
Erstens verhindern der fehlende Name und die fehlerhafte E-Mail-Adresse das Speichern während der Feldvalidierung. Korrigieren Sie diese Felder und versuchen Sie es erneut. Das Modell lehnt dann das Alter von einhundertdreißig ab und zeigt, warum das Bestehen der Feldprüfungen spätere Prüfungen nicht optional macht.
In der Rasterphase werden die verbleibenden E-Mail- und Closed-Row-Probleme erfasst und in der Zusammenfassung werden beide erläutert. Nach diesen Korrekturen ist jede Phase erfolgreich und der Speichervorgang ist abgeschlossen. Die endgültige Bestätigung bedeutet nun, dass der gesamte Validierungspfad bestanden wurde.
Stellen Sie den vollständigen Speicherpfad mit dem Zusammenfassungsanbieter und dem Shared Message Helper bereit. Schließen Sie eine Ausnahmebehandlung ein, die korrigierbare Eingaben von Systemfehlern unterscheidet. Dokumentieren Sie die Testfälle, damit ein anderer Entwickler sowohl blockierte Speicherungen als auch erfolgreiche Korrekturen reproduzieren kann.
- LektüreKI-Coding-Übung · 20 Min.
Erstellen Sie das Beispielprojekt ValidationClinic dieses Moduls mit ChatGPT oder Claude aus einem fertigen Prompt, der das Modell auf die Spezifikation des Moduls verweist – und prüfen, starten und erweitern Sie dann, was Sie erhalten, auch im Vergleich mit unserem eigenen Referenz-Build auf GitHub.
- WissenstestWissenstest – Modul 7 · 10 Min. · Bestehensgrenze 80%
- Praktisches LabLab – Abschlussprojekt: die vollständige Speicher-Pipeline · 45 Min.
Ziel: Schließen Sie das ValidationClinic-Abschlussprojekt ab. Schreiben Sie btnSave_Click als feste Pipeline: Zusammenfassung zurücksetzen, bindingSource.EndEdit() aufrufen, abbrechen, wenn ValidateChildren() fehlschlägt, abbrechen, wenn die DataAnnotations-Prüfung fehlschlägt, abbrechen, wenn ContactValidator Geschäftsfehler zurückgibt, abbrechen, wenn das Kontakt-Grid noch Zeilenfehler hat, und erst dann innerhalb eines try/catch speichern, das einen doppelten Namen in einen Feldfehler und jede andere Exception in eine verständliche Meldung umsetzt. Legen Sie SummaryErrorProvider als Implementierung von IErrorProvider an, weisen Sie ihn validation.ErrorProvider zu und leiten Sie Fehler über eine Hilfsmethode SetError, die sowohl in den Icon-ErrorProvider als auch in den Zusammenfassungs-Provider schreibt. Testen Sie Pflicht-, ungültige, gültige und Grenzwerte und schreiben Sie ein kurzes README, das das Validierungsdesign erklärt. Ergebnisse: Speicher-Pipeline, die EndEdit, ValidateChildren sowie Modell-, Geschäfts- und Grid-Prüfungen vor dem Speichern ausführt; Klasse SummaryErrorProvider, die SetError und GetError von IErrorProvider implementiert; Hilfsmethode SetError, die sowohl in den Icon-ErrorProvider als auch in den Zusammenfassungs-Provider schreibt; try/catch um das Speichern, das einen Fehler wegen eines doppelten Namens von Systemfehlern trennt; README mit dem Validierungsdesign und Testfällen für Pflicht-, ungültige, gültige und Grenzwerte.