En varios proyectos de ejemplo, he visto que ViewModels se usa para convertir objetos de datos en cadenas, para usar en la Vista.ViewModels y rendering
El ViewModel generalmente tendrá un constructor que reciba un parámetro: un objeto de datos. El constructor completará varias propiedades del ViewModel (principalmente cadenas y puntos).
Esto evita que ocurra una lógica compleja en la Vista.
A primera vista, esto me parece una buena idea, ya que obliga más a la separación de la Vista de la lógica compleja.
Por ejemplo, supongamos que mi vista intentaba representar una propiedad 'Tamaño' de un objeto de datos, que es un número entre 1 y 3 que representa 'Pequeño/Medio/Grande'.
En lugar de tener una declaración if/switch en mi vista, simplemente tendría un 'SizeString' o algo similar en mi ViewModel, y la instrucción if/switch iría en el constructor de ViewModel.
¿Alguien está en desacuerdo con este enfoque?
¿Sería mejor utilizar algún otro enfoque, como los ayudantes? Y si es así, ¿por qué?
Buena explicación. La razón por la que no estaba seguro de esto era porque estoy seguro de que leí en alguna parte que los Modelos de Vista deberían ser simples objetos POCO sin ninguna lógica. Pero claramente esto no funcionaría. Se debe permitir que ViewModels contenga lógica de presentación. – Jonathan
POCO no excluye la existencia de lógica :) –
Quería escribir sobre SRP, pero ya lo hizo. Como siempre digo, es difícil ser boxeador y bailarín de ballet simultáneamente. :) –