2010-06-22 14 views

Respuesta

7

En general, usted tendrá que hacer referencia a los modelos de dominio de la Visualización de modelos, o al menos cargar los modelos de dominio en los controladores y pasan la información a su Modelo de Vista.

Prefiero mantener controladores y vistas lo más simple/tonto posible, porque tanto los modelos de dominio como los modelos de vista son mucho más fáciles de probar.

Por lo tanto, a menudo hago referencia a mis modelos de dominio dentro de mis modelos de visualización. A veces utilizo la agregación, a veces solo copio las propiedades (en algunos proyectos solo con código antiguo simple, en otros proyectos usando un mapeador automático)

+0

pero hacerlo solo es razonable y solo funciona bien cuando su modelo de dominio se adapta bien a las necesidades de la vista. Escuché que un modelo de vista solo debería contener casi propiedades de cadena que ya están formateadas. Por cierto, NO tienes que copiar propiedades. ¡Te sugiero que leas acerca de AutoMapper, solo busca en Google! Es una gran herramienta imho. – Rookian

+0

Nota: dije que en algunos proyectos copio, en otros uso un auto mapeador, específicamente, AutoMapper :) Además, básicamente hago lo que describes. NO uso mis Modelos de Dominio como mis Modelos de Vista. Solíamos hacer esto y nos mordió bastantes veces. – CubanX

+0

Así que, como lo entiendo bien, puede mezclar objetos de modelo de vista y objetos de modelo de dominio. ¿Y envía ambos (es decir, el agregado que contiene un objeto de modelo de vista y un objeto de modelo de dominio) a la vista también? – Rookian

2

Tiendo a crear modelos de vista separados que contienen justo lo que necesito para mostrar en la vista. AutoMapper es una herramienta de creación para facilitar esto.

+1

¿Podría explicar con más detalle por qué NO mezclaría objetos de modelo de vista con objetos de modelo de dominio? Pros y contras ... – Rookian

+0

Las clases de mi modelo de dominio suelen tener muchos métodos mutadores de estado. No quiero exponerlos directamente a la capa de vista simplemente para evitar confusiones sobre dónde deben invocarse esos métodos. Requiero que todos mis comandos de dominio atraviesen una capa de servicio que conecte las sesiones de DB apropiadas, las comprobaciones de seguridad, etc. Sin embargo, normalmente DEBO exponer objetos de valor de mi dominio directamente a la capa de MVC. También tener una separación clara entre los modelos de lectura contra escritura (CQS) ayuda a mantener esto organizado. – Ryan

+0

Intento hacerlo de modo que tenga un modelo de vista para cada vista y ese modelo de vista tenga lo que necesita para crear la vista. Ese modelo de vista podría estar compuesto por varios modelos de dominio y solo usar algunos de los campos de cada uno. –

Cuestiones relacionadas