Domanda

A "Lookup" in questo esempio è un IList<string> delle abbreviazioni di stato. In generale, il vostro Domain Model pocos non includerà queste opzioni. ViewModels solito prendono questa responsabilità fa riferimento sia l'originale modello di dominio, nonché l'oggetto di ricerca, ma cosa succede quando i modelli di dominio sono annidati e si utilizza modelli MVC (che non avrà accesso alle proprietà di root l'originale del modello?

C'è un modo per includere le ricerche in un oggetto e il modello in un oggetto diverso per il modello? È ammissibile per assemblare on-the-fly una specifica ViewModel a quella del modello all'interno della vista (che dovrebbe includere tutti i dati nidificate da lì)? Penserei metodi statici di abbattere valori di ricerca è male.

Tutte le idee?

Note (a mia conoscenza):

Un modello di dominio POCO da un repository non cambia nella struttura. Se avete bisogno di un unico modello di avere sia l'oggetto del cliente e le opzioni di DDL per Stato degli Stati Uniti, per esempio, normalmente dispone di un ViewModel che fa riferimento all'oggetto cliente e il cliente liste Lookup.

Tuttavia, quando si ha un nidificato Domain Model (root aggregato), gli oggetti nidificati non hanno dove mettere gli elenchi di ricerca diretta, ei modelli MVC non possono accedere al livello principale Vista Modello (il loro modello di vista è il modello parziale).

Modifica

C'è un modo per mettere le liste DDL nel livello principale della ViewModel, poi quando si arriva all'oggetto cliente, costruire un nuovo ViewModel che fa riferimento le liste DDL livello principale e l'oggetto Customer corrente da inviare al modello ? Questo eliminerebbe i dati duplicati nel Modello, nonché utilizzare un unico modello per tutte le viste. L'unica cattiva sarebbe controller come i dati di codice assembly nella vista (che è proprio così male).

È stato utile?

Soluzione

Un paio di suggerimenti. In primo luogo, utilizzare modelli vista distinti per le vostre opinioni - non utilizzare direttamente i vostri modelli di dominio. Questi modelli vista può, e dovrebbe, portare i dati supplementari necessari dalla vista. In secondo luogo, è possibile utilizzare i sovraccarichi su DisplayFor / EditorFor per passare i dati di visualizzazione aggiuntive al modello. In questo modo il modello può essere specifico per un particolare modello di dominio e hanno ancora accesso ai dati aggiuntivi nel modello di vista.

Altri suggerimenti

Per statiche, immutabili come le liste abbreviazioni di stato, è possibile utilizzare lo stato di applicazione o la messa cache. Questi tipi di elenchi possono essere caricati in Application_Start da un database.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top