Ich würde sagen, dass es oft auf allen Ebenen zur Validierung erforderlich ist :)
ich eine Zeit lang dachte über folgende:
- Benutzereingabevalidierung: auf jeden Fall auf dem Controller, nicht auf jede Art von Modell. Beispiel: Captcha.
- Zeigen Sie verwandte Daten an, die im ViewModel validiert wurden (nicht IM ViewModel, sondern ON ViewModel). Beispiele: Passwortbestätigung, Erforderliche E-Mail.
- Business Rules Validierung geht definitiv in Model Validierung. Beispiele: Erforderlich E-Mail, Rabattcoupon sollte gültig sein.
- Möglicherweise Use-Case (Geschichte, Szenario usw.) Validierung. Es überprüft die Attribute nicht, sondern validiert die Korrektheit des gesamten Prozesses. Sollte zur Modellvalidierung (oder besser in einer separaten Schicht) gehen. Beispiel: Nur 3 Artikel können kostenlos während einer Woche erhalten werden, wenn keine Bestellung für den angegebenen Zeitraum gestellt wurde.
HINWEIS: Ich enthalten die Erforderlich E-Mail in beide 2 und 3, wie es oft hängt, wo es hingehört.
Wenn die E-Mail nur informative Rolle spielt - dann kann die Validierung entspannt werden und schieben Sie es auf das Ansichtsmodell. Wenn E-Mail eine starke Voraussetzung für die Anwendung ist, ist dies definitiv eine Modellvalidierung.
Die vierte Sache hat mit Validierung nichts zu tun, so wie wir sie verstehen.
Aber es sollte auch angewendet werden. Daher sollte das Ergebnis dem Benutzer angezeigt werden.
Grundsätzlich können alle vier Validierungstypen dieselbe Infrastruktur verwenden. Aber die Implementierung hängt davon ab:) ...
Prost,
Dmitriy.
mvvm tag? MVC's Viewmodel sind nicht die Viewmodels von MVVM pattern. –
MVVM basiert größtenteils auf dem MVC-Muster, aber ich würde mich freuen, wenn Sie Ihren Kommentar erläutern (vielleicht mit einigen Links). –