2011-04-15 8 views
5

Ahora estoy en la parte divertida de mi viaje en la construcción de una aplicación MVC. He pasado las últimas 3 semanas investigando arquitectura, CEBOLLA específicamente, y aprendiendo sobre IOC/DI y tal.ViewModel Qué hacer y qué no hacer

Así que mi pregunta es esta: ¿Cuál es la mejor manera de implementar ViewModels? He visto algunos ejemplos terribles hasta ahora.

+0

Ejemplos terribles? ¿Como? ¿Puedes publicarlos? Enlaces a ellos? – Oded

+0

Hahha. ¡No! Estoy seguro de que 5 minutos en google lo harán por ti. Uno de los problemas que me molestó fue que alguien envió el ViewModel al ServiceLayer, tomando los datos del ViewModel y luego actualizando la base de datos. Así que ahora el ServiceLayer tiene una dependencia en ese ViewModel específico ... No me sentó bien conmigo. –

+0

Con respecto a la capa de servicio, que se puede usar en casos en que almacenan en caché específicamente modelos de vista para el rendimiento, consulte CQRS (tenga cuidado de que su cabeza pueda a-splode) – TJB

Respuesta

2

Recomiendo revisar este artículo que describe diferentes "tácticas" para manejar los modelos de vista. http://blogs.msdn.com/b/simonince/archive/2010/01/26/view-models-in-asp-net-mvc.aspx

Algunas recomendaciones que puedo darle para los modelos de vista es:

  • Base directamente en su vista & cuáles son las necesidades de interfaz de usuario,
  • Prefiero crear la vista personalizada modelos de páginas separadas en lugar de generalizarlos para ser reutilizados en diferentes vistas.
  • que sean sencillas & plana, no se vaya por la borda con la herencia, etc.
  • Si va a asignar a partir de modelos de bases de datos, adoptar un método existente para la asignación entre sus modelos y modelos de vista tales como AutoMapper
  • considerar el uso de dynamic en algunos casos, es más flexible y puede tener menos fricción.
+0

Impresionante y gracias. Agregaré tu respuesta a mi lista de "ViewModel" y no la hago para mi blog. –

+0

@Code Oh, dulce, comenta el enlace si no te importa una vez que esté activo. Tan halagado como yo por haber aceptado la respuesta, esperaría un poco, probablemente haya muchos otros comentarios por ahí;) – TJB