In diversi progetti di esempio, ho visto ViewModels in uso per convertire oggetti di dati in stringhe, da utilizzare nella vista.ViewModels and rendering
In genere, il ViewModel dispone di un costruttore che riceve un parametro - un oggetto dati. Il costruttore compilerà quindi varie proprietà del ViewModel (principalmente stringhe e int).
Ciò impedisce la presenza di qualsiasi logica complessa nella vista.
A prima vista, questa mi sembra una buona idea, poiché impone più completamente la separazione della Vista da una logica complessa.
Ad esempio, supponiamo che la mia vista stia cercando di rendere una proprietà 'Size' di un oggetto dati, essendo Size un numero compreso tra 1 e 3 che rappresenta 'Small/Medium/Large'.
Invece di avere un'istruzione if/switch nella mia vista, avrei solo un 'SizeString' o qualcosa di simile nel mio ViewModel, e l'istruzione if/switch andrebbe nel costruttore ViewModel.
Qualcuno non è d'accordo con questo approccio?
Sarebbe meglio utilizzare qualche altro approccio, come gli helper? E se sì, perché?
Buona spiegazione. Il motivo per cui non ero sicuro di ciò è che sono sicuro di aver letto da qualche parte che ViewModels dovrebbe essere semplicemente un oggetto POCO senza logica. Ma chiaramente questo non avrebbe funzionato. I ViewModels dovrebbero poter contenere la logica di presentazione. – Jonathan
POCO non esclude l'esistenza della logica :) –
Volevo scrivere su SRP, ma l'hai già fatto. Come dico sempre, è difficile essere un pugile e un ballerino contemporaneamente. :) –