2009-08-10 23 views
24

Wo sollte die Validierung stattfinden, wenn ViewModels mit MVC (MVVM), auf dem Model oder dem ViewModel verwendet wird? (Oder beides oder nicht)? Und warum? Ich bringe dies vor allem in Anbetracht der V2 von ASP.NET MVC in Kürze.Validierung: Model oder ViewModel

Was ist mit einer komplexen/benutzerdefinierten Validierung?

+2

mvvm tag? MVC's Viewmodel sind nicht die Viewmodels von MVVM pattern. –

+0

MVVM basiert größtenteils auf dem MVC-Muster, aber ich würde mich freuen, wenn Sie Ihren Kommentar erläutern (vielleicht mit einigen Links). –

Antwort

19

Jede geschäftliche Validierung sollte im Modell enthalten sein. Jede website-spezifische Validierung könnte sowohl im Model als auch im ViewModel durchgeführt werden. Auf diese Weise kann sich Ihre Geschäftslogik (Modelle) hinter einer anderen Schnittstelle (Windows, Web Forms usw.) bewegen und Ihre Validierung bleibt erhalten.

5

Modell. Ihre Validierung sollte in Ihrer Business-Schicht erfolgen. Ihr Ansichtsmodell sollte nur für die Einrichtung Ihrer Ansicht verwendet werden.

11

Ich würde sagen, dass es oft auf allen Ebenen zur Validierung erforderlich ist :)

ich eine Zeit lang dachte über folgende:

  1. Benutzereingabevalidierung: auf jeden Fall auf dem Controller, nicht auf jede Art von Modell. Beispiel: Captcha.
  2. Zeigen Sie verwandte Daten an, die im ViewModel validiert wurden (nicht IM ViewModel, sondern ON ViewModel). Beispiele: Passwortbestätigung, Erforderliche E-Mail.
  3. Business Rules Validierung geht definitiv in Model Validierung. Beispiele: Erforderlich E-Mail, Rabattcoupon sollte gültig sein.
  4. 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.

Verwandte Themen