2010-04-08 59 views
5

He visto muchos ejemplos de MVC donde los objetos de dominio se pasan directamente a las vistas, esto funcionará bien si su vista es simple.asp.net ¿MVC debería ser un modelo de dominio encapsulado de modelo de vista?

La alternativa común es tener un modelo de vista que tenga todas las mismas propiedades que su modelo de dominio + cualquier propiedad adicional que su vista pueda necesitar (como 'confirmPassword').

Antes de hacer demasiada lectura y antes de descubrir AutoMapper comencé a crear mi propia variante de view-model donde el objeto de dominio (u objetos de múltiples dominios) son simplemente propiedades del modelo de vista.

¿He hecho algo malo? ¿Qué problemas o beneficios podrían derivarse de este enfoque? ¿En qué circunstancias podría funcionar bien esta manera de hacer las cosas?

+0

si está encapsulando el modelo de dominio, de lo que es el propósito del modelo de vista – Omu

+0

La razón principal fue agregar varios modelos de dominio, por ejemplo: producto, cesta, navegación, etc. – Myster

Respuesta

4

No hay nada inherentemente malo en exponer su modelo de dominio directamente a la vista. El riesgo principal proviene de exponer una propiedad que no pretendía, como un campo de salario en un objeto Empleado. Asegúrate de tener cuidado con esto si estás devolviendo JSON.

Otra cosa a tener en cuenta es cuando se realiza un enlace desde un formulario de edición. Debe conocer el específico risks que están involucrados. Básicamente, un usuario malintencionado podría agregar campos al POST que casualmente coinciden con los campos que no quería que fueran editables. Siempre me enlace a un objeto intermediario que se pasa a un servicio antes de mapearlo de vuelta al dominio.

+0

Esto solo se aplica a los objetos de dominio que son acción parámetros; no hay nada inseguro en pasarlos a las vistas. – queen3

+0

@queen Hay dos preocupaciones separadas. Saliente: exponer campos sensibles a través de JSON/XML/lo que sea. Entrante: parámetros de formularios maliciosos. – Ryan

+0

Recuerdo que alguien que defiende el modelo de vista es el MISMO tipo que el parámetro de acción para las devoluciones. Parece que el enfoque significa que debe separar completamente su modelo de Dominio. (a menos que esté previsto que esté completamente abierto a modificaciones) – Myster

0

¿Malo? No se puede usar Automapper. ;)

¿Bueno? Nada viene a la mente.

No creo que hayas hecho nada horrible. ¿Funciona para ti? Si es así, ¿por qué no?

Cuestiones relacionadas