Frage

A "Lookup" in diesem Beispiel ein IList<string> staatlichen Abkürzungen. Im Allgemeinen Ihre Domain Model POCOs werden diese Optionen nicht enthalten. Viewmodels der Regel nehmen diese Verantwortung sowohl die ursprüngliche Domain Model sowie das Objekt Lookup Referenzierung, aber was passiert, wenn die Domain Models verschachtelt sind und Sie MVC-Vorlagen verwenden (die keinen Zugriff auf die ursprünglichen Stamm Eigenschaften Modell haben?

Gibt es eine Möglichkeit, die Lookups in einem Objekt und das Modell in einem anderen Objekt für die Vorlage aufgenommen werden? Ist es zulässig, zu montieren on-the-fly ein Ansichtsmodell spezifisch für diese Vorlage in der Ansicht (die alle verschachtelten Daten von dort enthalten mußten)? Ich würde denken, statische Methoden Lookup-Werte nach unten zu ziehen, ist schlecht.

Irgendwelche Ideen?

Notes (meines Wissens):

Ein Domain Model POCO aus einem Repository ändert sich nicht in ihrer Struktur. Wenn Sie ein einzelnes Modell benötigen sowohl das Customer-Objekt zu haben und die DDL-Optionen für die US-State zum Beispiel, haben Sie in der Regel ein Ansichtsmodell, dass Verweise des Customer-Objekt und der Kunden Lookup-Listen.

Wenn Sie jedoch eine verschachtelte Domain Model (Aggregat root) haben, müssen die verschachtelten Objekten nicht, wo die Auswahllisten zu setzen, und die MVC-Vorlagen zugreifen können nicht die Root-Ebene Ansicht Modell (ihrer Ansicht nach Modell ist das Teilmodell).

Edit:

Gibt es eine Möglichkeit die DDL-Listen in der Root-Ebene des Ansichtsmodell zu setzen, dann, wenn Sie das Customer-Objekt zu erhalten, bauen eine neue Ansichtsmodell, dass Verweise die Root-Ebene DDL-Listen und die aktuelle Customer-Objekt an der Vorlage zu senden ? Dies würde beseitigen doppelte Daten im Modell sowie ein einziges Modell für alle Ansichten verwenden. Der einzige Nachteil wäre Controller wie Daten sein Assembler-Code aus Ihrer Sicht (was genauso schlimm ist).

War es hilfreich?

Lösung

Ein paar Vorschläge. Verwenden Sie zunächst separate Ansicht Modelle für Ihre Ansichten - nicht direkt Ihre Domain-Modelle verwenden. Diese Ansicht Modelle können und sollen, tragen die zusätzlichen Daten durch die Ansicht benötigt. Zweitens können Sie die Überlastungen verwenden auf DisplayFor / EditorFor weitere Ansicht Daten an die Vorlage übergeben. Auf diese Weise Ihre Vorlage spezifisch für ein bestimmtes Domänenmodell sein kann und dennoch Zugriff auf die zusätzlichen Daten in dem View-Modell hat.

Andere Tipps

Für die statische, unveränderliche Listen wie Zustand Abkürzungen, könnten Sie Anwendungsstatus oder Cache-Eintrag verwenden. Diese Arten von Listen in Application_Start aus einer Datenbank geladen werden können.

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