3 Stimmen

Modell-Ansicht-Präsentator: UI validieren

Ich bin auf der Suche nach einem Best-Practice-Ansatz, wie man die UI-Validierung in einer Model-View-Presenter-Architektur durchführt.

Ich muss einige Formulare mit einer Vielzahl von Steuerelementen validieren. Und um es dem Benutzer leicht zu machen, speichere ich alle Fehler oder Warnungen mit einem Verweis auf das Steuerelement in einem Protokoll, das dem Benutzer anschließend angezeigt wird, so dass er sofort zu dem Steuerelement springen kann, das er reparieren muss. Dies geschieht im View-Teil, was eigentlich falsch ist, da die Validierung im Presenter stattfinden sollte, um den View auszutauschen.

Das Problem für mich bei dieser Validierung im Präsentator ist, dass nicht nur geprüft wird, ob die angegebenen Werte falsch sind, sondern auch, ob Radiobuttons markiert wurden, die ein Textfeld aktivieren, das dann z. B. einen Text enthalten muss.

Ich dachte an die Verwendung der BindingSource im Präsentator, da es die UI-Änderungen reflektiert und für den Präsentator sichtbar ist. Aber ich bin nicht sicher, ob dies der richtige Weg zu gehen ist (und ich denke, es ist Art von hässlich)?

Übrigens: Die Validierung findet nicht erst statt, bevor ich in die Datenbank schreibe, sondern bereits, während der Benutzer mit den Formularen arbeitet.

Fällt jemandem eine gute Möglichkeit ein, dies zu tun?

2voto

lostiniceland Punkte 3649

Wir haben endlich eine Lösung gefunden. Es wird getan, wie ich erwartet hatte, mit dem DataSet in den Präsentator, die von verschiedenen Validator-Klassen (eine für jede unserer "Seiten") verarbeitet wird. Der schwierigste Teil ist, wenn die Steuerelemente voneinander abhängen (aber im Endeffekt wird nur geprüft, ob Werte im DataSet gesetzt sind). Derzeit ist es nicht möglich, zum Steuerelement zu springen, um Fehler zu beheben, aber dies wird später über Reflection hinzugefügt, indem der Name des Steuerelements an die LogEntries übergeben wird, und die Ansicht kann dann herausfinden, wo dieses Steuerelement ist.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X