ASP.NET MVC, Model e ViewModel separazione delle preoccupazioni?
-
05-07-2019 - |
Domanda
Ultimamente, ho esplorato qual è il modo migliore per organizzare il livello di presentazione dell'applicazione ASP.NET MVC quando il modello sottostante è complesso. Ciò che è emerso finora è l'architettura MVVM con i loro oggetti ViewModel. Tuttavia, non sono sicuro di quali siano le migliori pratiche quando questo tipo di architettura è nel caso.
- Gli oggetti ViewModel possono contenere oggetti Model?
- Se si utilizza MVVM, è consigliabile utilizzare oggetti Model su Views?
- Dove deve essere implementata la validazione, nelle classi ViewModel o Model?
- Il livello aziendale (livello di servizio) dovrebbe conoscere ViewModel e chi è responsabile della mappatura tra ViewModel e Model?
Soluzione
- La maggior parte delle volte, gli oggetti ModelView sono solo contenitori che contengono oggetti Model quando è necessario inviarne più tipi o quando è necessario passare un paio di altre proprietà che sono necessarie solo in Views.
- Se il lavoro della vista è quello di visualizzare i dettagli di un modello e non c'è nient'altro da passare alla vista, perché no?
- Dipende. È possibile utilizzare le classi ModelView e Model solo per trasportare dati tra livelli. E prenditi cura della convalida tramite i raccoglitori di modelli personalizzati o con un livello di servizio.
- Non c'è motivo per cui non dovrebbero conoscere ModelViews. Ma di solito si ottengono solo i modelli richiesti dal livello di servizio dal controller, quindi li si passa direttamente o in ModelView alla vista.
A proposito, non considererei ModelViews come un'architettura. È più simile a "utilizzare uno quando ne hai bisogno". Dopotutto, non ha senso farlo per passare i dati da visualizzare:
class SomeModelView {
public MyModel model { get; set; }
}
Basta passare il MyModel
se è abbastanza per consentire alla vista di fare il suo lavoro.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow