Frage

Im Model-View-Presenter-Muster, wo sollten wir Validierungen von Benutzereingaben schreiben.

War es hilfreich?

Lösung

Domain spezifische Regeln / Validierungen sollten im Modell. Sie können eine model.validate () müssen Sie wissen zu lassen, wenn die Regeln nicht verletzt werden. Schauen Sie sich Rails-Modell (Active) Klassen für eine gute Umsetzung dieses Konzepts.

Die Ansicht sollte es schwierig machen, für den Benutzer in einem ungültigen Eingabe einzugeben. So Klasse von Eingabefehlern ‚eine Zeichenfolge für einen numerischen Wert eingeben‘ sollte vor dem Erreichen der Moderator erstickt werden. Es kann eine gewisse Duplizierung von Validierungen zwischen Modell und sehen sein. Z.B. AttributeX muss zwischen 1-100 liegen. Dies muss im Modell validiert wird .. zur gleichen Zeit, die Sie in einer Schleuder in der Benutzeroberfläche mit dem minValue und maxValue Bereich Satz 1-100 auf Steckplatz mögen.

Andere Tipps

ich in der Regel meine Ansicht halten völlig sauber, keine Logik gibt. Aber ich mache nicht viele Web-Entwicklung. In Ajax-ish Situationen mögen Sie vielleicht Clientseite Validierung haben, die in der Ansicht zu gehen hat.

Validierung von Business Logic geht in dem Modell. Mit Business-Logik Validierung meine ich Dinge wie die Überprüfung Mindestbestellmenge etc.

Eingabevalidierung geht in den Vortragenden. Dies kann Dinge wie die Überprüfung, ob ein Nummernfeld nicht nicht numerische Zeichen enthält. Aber je nach Situation kann dies auch bedeuten, wenn die Überprüfung von Dateien existieren etc.

In komplexeren Fällen, in denen die Validierung in verschiedenen Orten wiederverwendbar sein soll ich in der Regel in eine Validierungsmaschine trennen, die an verschiedenen Orten aufgerufen werden können. Dies löst einige Probleme mit Validierungscode zu duplizieren, die sowie die Persistenz-Schicht beispielsweise in der Präsentationsschicht verwendet wird.

Moderator ....

Der Blick sollte haben „Widgets“, die ungültige Eingabe verhindern, wenn möglich.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top