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?
È stato utile?

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
scroll top