2010-11-26 22 views
1

Zu Beginn der Entwicklung sah ich mich mit einem Problem namens "eine Impedanzabweichung zwischen Domänenmodell und der Ansicht" konfrontiert. Um dieses Problem zu lösen, entscheide ich mich für das ViewModel-Muster - für jede Ansicht (die stark typisiert ist) erstellen wir die viewmodel-Klasse. Wo aber befindet sich die Validierungslogik? In Viewmodel-Klassen oder in unseren Domain-Modell-Objekten? Und wo müssen wir Operationen ausführen, um Datenbank abzufragen - in Controller-Aktion, und dann füllen Viewmodel oder Straight in Viewmodel?ASP.NET MVC View Modellmuster - Validierung und Datenbankoperation

Vielen Dank.

Antwort

2

Sie sollten eine Validierungslogik für das Viewmodel haben. Dies ist, was die Ansicht sendet und was validiert werden soll. Was das Auffüllen des Viewmodels angeht, so geht es hier weiter: Schreiben Sie ein Repository, das die Datenbank abfragt und Modelle zurückgibt. Dann ordnen Sie diese Modelle den Viewmodels zu (AutoMapper kann Ihnen hier helfen). Schließlich geben Sie Ansichtsmodelle an die Ansicht zurück. Dies funktioniert auch andersherum: Die Benutzer senden einige Daten an eine Controller-Aktion, da die Form eines View-Modells, das einmal validiert wurde, zurück auf ein Modell abgebildet und zur Aktualisierung an das Repository übergeben wird.

Alternativ zu den Datenanmerkungen können Sie auch FluentValidation zur Überprüfung Ihrer Ansichtsmodelle betrachten. Es integrates nicely mit ASP.NET MVC.