Pregunta

Últimamente, he estado explorando cuál es la mejor manera de organizar la capa de presentación de la aplicación MVC de ASP.NET cuando el Modelo subyacente es complejo. Lo que surgió hasta ahora es la arquitectura MVVM con sus objetos ViewModel. Sin embargo, no estoy seguro de cuáles son las mejores prácticas cuando se trata de este tipo de arquitectura.

  • ¿Los objetos de ViewModel pueden contener objetos de modelo?
  • Si se usa MVVM, ¿es recomendable que los objetos del modelo se usen en las vistas?
  • ¿Dónde debería implementarse la validación, en ViewModel o en las clases de modelo?
  • ¿Debería saber la capa de negocios (capa de servicio) sobre ViewModel y quién es responsable de la asignación entre ViewModel y el modelo?
¿Fue útil?

Solución

  • La mayoría de las veces, los objetos ModelView son simplemente contenedores que contienen objetos Model cuando necesitamos enviar varios tipos de ellos, o cuando necesitamos pasar un par de propiedades más que solo se necesitan en Vistas.
  • Si el trabajo de la vista es mostrar los detalles de un modelo y no hay nada más que pasar a la vista, ¿por qué no?
  • Depende. Puede usar sus clases ModelView y Model solo para transportar datos entre capas. Y cuídese de la validación a través de las carpetas modelo Cutom o con una capa de servicio.
  • No hay ninguna razón por la que no deberían saber sobre ModelViews. Pero, por lo general, solo obtiene los modelos solicitados de la capa de servicio del controlador y luego los pasa directamente o en un ModelView a la vista.

Por cierto, no consideraría ModelViews como una arquitectura. Se parece más a " utilizar uno cuando lo necesite " ;. Después de todo, no tiene sentido hacer esto para pasar datos para ver:

class SomeModelView {
    public MyModel model { get; set; }
}

Simplemente pase el MyModel si eso es suficiente para que la vista haga su trabajo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top