2 Stimmen

MVC Custom Model Binder verwenden?

Ich habe eine MVC-Anwendung, die ich gerade schreibe. Es wird die Notwendigkeit für mehrere Instanzen der gleichen Seite geöffnet werden, jeder Zugriff auf verschiedene Datensätze aus einer Datenbank, diese Record-Objekte müssen auch durch einen Fluss von Seiten übergeben werden, bevor schließlich aktualisiert werden.

Was ist der beste und korrekteste Weg, dies zu erreichen - sollte/kann ich eine benutzerdefinierte Modell-Bindemittel erstellen, die Links zu einem Objekt über seine eindeutige ID und erstellen Sie dann jeden Datensatz-Objekt in der Sitzung, aktualisieren Sie, wie ich durch jede Seite Fluss gehen und dann schließlich die Update-Methode aufrufen? Oder gibt es einen besseren Weg, dies zu tun?

Prost

MH

2voto

Mark Seemann Punkte 216836

Technisch wäre das möglich, aber ich glaube nicht, dass es ratsam ist. Wenn Sie sich die Signatur von IModelBinder ansehen, müssen Sie einige Hürden im Zusammenhang mit dem ControllerContext überwinden, wenn Sie auf den restlichen Kontext Ihrer Anwendung zugreifen möchten (z. B. wie Sie Objekte auf der Grundlage von IDs dehydrieren können).

Es ist möglich, aber so umständlich, dass man sich überlegen sollte, ob es der richtige Ansatz ist. Meiner Meinung nach besteht die Aufgabe eines ModelBinders darin, HTTP-Anfragedaten auf stark typisierte Objekte abzubilden. Nicht mehr und nicht weniger - er ist ein reiner Mapper, und der Versuch, ihn mehr tun zu lassen, würde gegen das Prinzip der einzigen Verantwortung verstoßen.

Es hört sich für mich so an, als bräuchten Sie einen Application Controller - im Grunde eine Klasse, die die Views und den Status des zugrunde liegenden Models orchestriert. Sie können mehr über das Application Controller Design Pattern lesen in Muster der Unternehmensanwendungsarchitektur .

Da eine Webanwendung von Natur aus zustandslos ist, benötigen Sie einen Ort, um den Zwischenzustand der Anwendung zu speichern. Ob Sie dafür Sitzungen oder einen benutzerdefinierten dauerhaften Speicher verwenden, hängt von den Anforderungen der Anwendung und der allgemeinen Komplexität der Zwischendaten ab.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X