2009-05-20 9 views
3

Ich suche nach einem Best-Practice-Ansatz für die UI-Validierung in einer Model-View-Presenter-Architektur.Model-View-Presenter: Benutzerschnittstelle validieren

Ich muss einige Formulare mit vielen Kontrollen 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, damit 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 die Ansicht auszutauschen. Das Problem für mich, diese Validierung im Presenter zu machen ist, dass es nicht nur überprüft, ob die angegebenen Werte falsch sind, es muss auch überprüft werden, ob Radiobuttons aktiviert wurden, was eine Textbox ermöglicht, die dann etwas Text enthalten muss beispielsweise.

Ich dachte daran, die BindingSource im Presenter zu verwenden, da sie die Änderungen der Benutzeroberfläche widerspiegelt und für den Präsentator sichtbar ist. Aber ich bin mir nicht sicher, ob das der richtige Weg ist (und ich denke, es ist irgendwie hässlich).

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

Kann jemand an eine gute Möglichkeit denken, dies zu tun?

Antwort

2

Wir haben endlich eine Lösung gefunden. Es wird getan, wie ich erwartete, mit dem DataSet in der Presenter, die von verschiedenen Validator-Klassen (eine für jede unserer "Seiten") verarbeitet wird. Der schwierigste Teil ist, wenn Kontrollen voneinander abhängen (aber am Ende wird nur überprüft, ob Werte im DataSet gesetzt sind). Derzeit ist es nicht möglich, zu dem 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 dann herausfinden kann, wo sich dieses Steuerelement befindet.

Verwandte Themen