2011-08-25 21 views
7

? He estado trabajando en un proyecto de mascotas en el lado para aprender mejor el mvc asp.net. Mi pregunta es sobre viewmodels en mvc. Entiendo que el controlador debe manejar la interacción entre la vista y el modelo. Siento que sigo teniendo que crear clases de viewmodel para combinar información de los modelos para pasar a la vista.¿Es una mala práctica usar muchos viewmodels en asp.net mvc

¿Es esta una mala práctica? ¿Debo hacer más de la lógica en otro lado y reducir los viewmodels?

Por el momento, casi tengo un modelo de vista para cada una de mis vistas principales. Pero definitivamente no quiero que la vista acceda al modelo directamente.

Respuesta

6

No, todas sus vistas deben estar fuertemente tipadas, por lo que para cada vista, un modelo de vista es la mejor práctica. Here es un artículo muy bueno sobre viewmodels.

+0

Excelentes respuestas. Ese artículo lo resumió muy bien. Eso es básicamente lo que estoy haciendo en este momento. Gracias. – Deekane

2

Cuantos más viewmodels use mejor. Los viewmodels le permiten crear un solo objeto que puede contener diferentes tipos de datos de sus modelos. Estos son muy útiles al crear plantillas. Además, esto es muy útil cuando se usan JQuery y Ajax, ya que es una buena manera de pasar datos a su controlador y luego directamente al DOM. En mi opinión, usa tantos viewmodel como desees.

Otra cosa que puede considerar es tratar de tener un mejor diseño de su modelo. Personalmente trato de construir mi modelo como una base de datos SQL y seguir los formularios de normalización. No debería tener que crear un nuevo modelo de vista para cada vista, además de los modelos que ya tiene. Si necesita pasar información a la vista que no es parte del modelo que está utilizando, use ViewData o ViewBag. Estos se pasan como un objeto, por lo que deberá enviarlos a la clase adecuada.

0

Nada malo en esto. Tanto su modelo de vista se ve más cerca como mejor.

El modelo no ha podido coincidir con Vista, por lo que utiliza la clase ViewModel para eso.

0

Aquí encontrará excelentes respuestas y esta es mi opinión sobre por qué muchos modelos de visualización no son un problema. Tus ViewModels son una buena forma de separar tus objetos puros de acceso a datos o incluso tus objetos de dominio de tu capa de presentación y proporcionar una versión simplificada de esos objetos para que consuman tus vistas.

Se supone que tus puntos de vista son tontos y, para mí personalmente, lo que intento lograr es dar masajes a mi modelo de dominio en un ViewModel para que mi vista lo consuma.

-3

El uso de muchos modelos de vista crea un caos en su proyecto. Es mucho mejor crear un Tuple en el controlador y luego pasarlo.

Cuestiones relacionadas