2008-10-20 16 views

Antwort

18

Domänenspezifische Regeln/Validierungen sollten im Modell enthalten sein. Sie können eine model.validate() haben, um Sie wissen zu lassen, ob die Regeln nicht verletzt werden. Sehen Sie sich die Klassen des Rails-Modells (ActiveRecord) für eine gute Implementierung dieses Konzepts an.

Die Ansicht sollte es dem Benutzer erschweren, ungültige Eingaben einzugeben. Daher sollte die Eingabe einer Zeichenfolge für einen numerischen Wert von Eingabefehlern unterbrochen werden, bevor der Präsentator erreicht wird. Es kann zu einer Duplizierung von Validierungen zwischen Modell und Ansicht kommen. Z.B. AttributeX muss zwischen 1 und 100 liegen. Dies muss im Modell validiert werden. Gleichzeitig möchten Sie vielleicht einen Spinner in der Benutzeroberfläche einfügen, wobei der minValue- und maxValue-Bereich auf 1-100 gesetzt ist.

+0

Könnten Sie bitte antworten http://StackOverflow.com/Questions/8851933/Event-Bubbling-and-MVP-ASP-NET? – Lijo

0

Moderator ....

Die Ansicht sollte haben „Widgets“, die ungültige Eingabe, wo möglich, zu verhindern.

3

Normalerweise halte ich meine Sicht völlig sauber, keine Logik da. Aber ich mache nicht viel Web-Entwicklung. In Ajax-ish-Situationen möchten Sie möglicherweise eine clientseitige Validierung, die in der Ansicht angezeigt werden muss.

Business-Logik-Validierung geht in das Modell. Bei der Validierung von Geschäftslogik meine ich Dinge wie die Überprüfung der Mindestbestellmenge usw.

Eingabevalidierung geht in den Presenter. Dies kann zum Beispiel sein, zu prüfen, ob ein Zahlenfeld nicht-numerische Zeichen enthält. Je nach Situation kann dies aber auch bedeuten, zu überprüfen, ob Dateien vorhanden sind.

In komplexeren Fällen, in denen die Validierung an verschiedenen Stellen wiederverwendet werden sollte, wird sie normalerweise in eine Validierungs-Engine unterteilt, die an verschiedenen Stellen aufgerufen werden kann. Dies löst einige Probleme mit der Duplizierung von Validierungscode, der zum Beispiel in der Präsentationsschicht und der Persistenzschicht verwendet wird.

+0

Das ist der Ansatz, den wir gemacht haben - wir haben unsere Validierung in einem gemeinsamen Paket, so dass wir die Eingabe zweimal überprüfen können: einmal im Client, so können wir den Benutzer sofort informieren, wenn ungültige Eingabe, und noch einmal auf dem Server, um sicherzustellen der Benutzer betrügt nicht. –