Sono stato alla ricerca di una struttura di progetto asp.net MVC per un nuovo progetto e una domanda su qualcosa mi sta confondendo. Qual è la differenza tra modelli e modelli di visualizzazione? Sarei corretto nel dire che i modelli di vista comprendono i modelli nelle proprietà del modulo?differenza tra modelli e modelli di vista
risposta
Ho un blog in cui voglio visualizzare l'elenco degli ultimi messaggi, i commenti più recenti, Categorie messaggio in un'unica vista. Come posso farlo? Posso fortemente scrivere la mia vista su qualsiasi modello giusto? Arriva visualizza il modello.
Ho creato un modello di vista chiamato BlogViewModel
che contiene i post più recenti, gli ultimi commenti e altre cose come proprietà e collego la mia vista a questo modello. Il posts
, comments
.. sono i modelli di dominio mentre il BlogViewModel
è il modello di vista creato appositamente per la vista.
Domani mostrerò il mio blog in una versione mobile e in quel momento potrò creare un modello di visualizzazione semplice che contenga solo meno proprietà. Infine .. i modelli di vista sono per le viste e la maggior parte delle volte agiscono come wrapper sui modelli di dominio reale!
ViewModel
è la versione di un modello dai livelli del dominio aziendale adeguati alla vista specifica.
Ha solo proprietà relative alla vista e non dovrebbe avere metodi (eccetto quelli semplici come ToString()
).
ViewModel
è un "contenitore di dati" solo.
Un modello è semplicemente una rappresentazione di un oggetto nell'applicazione. Tuttavia, ci sono alcuni diversi tipi di modelli di cui dovresti essere a conoscenza.
Domain Model: Questo rappresenta un oggetto di dominio nella vostra applicazione, come una tabella di SQL se si utilizza un ORM (Linq2SQL, EF).
Visualizza modello: rappresenta un oggetto che si desidera visualizzare/modificare/ecc. Un modello di visualizzazione può contenere proprietà di diversi o nessun modello di dominio e in genere esclude le proprietà che i tuoi utenti finali non dovrebbero sfruttare. Visualizza I modelli devono contenere solo gli elementi necessari per visualizzare i dati appropriati all'utente finale per una richiesta specifica.
Here is some Jimmy Bogard per voi circa visualizzare i modelli e il loro uso.
Un modello è in genere più strettamente correlato al modo in cui i dati vengono archiviati (database, servizi, ecc.) E il modello sarà molto simile a quelli.
Il ViewModel d'altra parte è strettamente correlato al modo in cui i dati vengono presentati all'utente. Di solito è una versione piatta del modello, denormalizzata, ecc. Può essere l'aggregazione di più modelli.
Per il tipico Person
oggetti, il vostro modello può contenere le proprietà come la seguente:
- FirstName
- Cognome
- BirthDate
Tuttavia, nel vostro ViewModel si può scegliere di rappresentare in modo diverso e avere qualcosa di più simile:
- FULLNAME
- Età
Vorrei aggiungere che un oggetto Model dovrebbe rappresentare la struttura semantica/concettuale di un oggetto, le sue proprietà e comportamenti intrinseci/naturali, non tanto il modo in cui viene effettivamente memorizzato. Lo spazio di archiviazione è soggetto a dettagli di implementazione, che non sono caratteristiche reali dell'oggetto. – heltonbiker
@heltonbiker, questo è un grande punto. Penso che ci siano molti modelli, ViewModels, modelli di business logic, modelli di archiviazione dei dati, ecc. Spesso lottiamo perché non abbracciamo le differenze di ognuno di essi e ci concentriamo invece sulle loro somiglianze. Potrei semplicemente scrivere un post sul blog a breve;) –
mi sembra che la MODELLAZIONE sia la più trascurata tra le attività di sviluppo più importanti (beh, almeno nella maggior parte dei posti che conosco ...) – heltonbiker
Si potrebbe cercare su Google. SO stesso ha molte domande reg. questo argomento. – VJAI
Questa domanda SO- http://stackoverflow.com/questions/4061440/asp-net-mvc-model-vs-viewmodel risponde perfettamente a questa domanda. – Bibhu