Frage

Ich bin nicht daran interessiert, Antworten zur Clientseite Validierung oder Modell verbindlich. Wirklich, diese Frage zu einer Datenzugriffsklassenbibliothek außerhalb von MVC anwenden könnte, aber die Probleme sind ähnlich, denke ich.

Ich bin das Repository-Muster unter Verwendung von derzeit für den Datenzugriff mit meinen Einheiten (Modelle). Derzeit werden die Repositories behandeln alle die CRUD-Operationen, aber ich denke, ich möchte für meine Modelle selbst verantwortlich sein für das Speichern, um die Validierung zu tun. Wie soll ich damit umgehen?

Ich könnte ein IsValid Methode in meinen Modellen hinzuzufügen, die die Repositories, dass dann alle meine Business-Logik laufen konnte nennen könnte, bevor das Repository das Modell speichert, dann aber nichts zwingt den Repositories diese Validierungslogik zu nennen, nicht wahr?

Wenn ich die Modelle wollen eine Save-Methode haben, was ist dann der richtige Weg für sie, sich selbst zu retten? Sie sollten nicht bis zum Repository zurückrufen sollten sie auch?

Alle Gedanken, wie ich damit umgehen sollte?

Danke!

War es hilfreich?

Lösung

Es ist nichts falsch mit so dass das Modell Speichervorgänge zu validieren; es ist sogar möglich, falsch zurückzukehren oder eine Ausnahme zu werfen. Die Schwierigkeit ergibt sich, wenn man dann Rückmeldung an den Benutzer zur Verfügung stellen müssen, warum ihre eingegebenen Daten nicht gültig ist.

Die Validierung kann und sollte zuerst in der Ansicht auftreten. Dies kann leicht Client-Seite mit jQuery Bibliotheken durchgeführt werden. Aber die Daten müssen noch serverseitige validiert werden, nachdem der Benutzer sendet, und wenn es noch Probleme mit den Daten sind, müssen Sie noch eine Erklärung für den Benutzer zur Verfügung stellen.

Aufgrund der Notwendigkeit, Benutzer-Feedback, serverseitige Validierung dieser Art zu schaffen, wird in einem Ansicht Modell Objekt effektiv zur Verfügung gestellt. Dieses Datenobjekt dient zwei Zwecken: Erstens, sie die Daten verkapselt, die zwischen der Ansicht und dem Controller in einem stark typisierte Objekt passiert. Zweitens bietet es einen bequemen Platz Validierung durchgeführt werden, ohne in Validierungslogik erfordern entweder die Steuerung oder die Ansicht.

Wenn Linq to SQL verwendet wird, kann die Ansicht Modell eine Erweiterung der aktuellen Datenmodellklasse sein, die teilweise Schlüsselwort in C #. Auf diese Weise können Sie die vorhandenen ORM-Funktionen des erzeugten Linq to SQL-Klasse verwenden, auf der zusätzliche Validierung Funktionalität anheftet. Ich gehe davon aus, dass dies die gleiche Art und Weise in der Entity Framework arbeitet, und andere ORMs.

Ansicht Modelle sind in der NerdDinner Tutorial hier beschrieben: http://nerddinnerbook.s3.amazonaws.com/Part6.htm

Der Validierungsprozess ist hier beschrieben:
http://nerddinnerbook.s3.amazonaws.com/Part3.htm

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