2010-06-10 18 views
9

Estoy utilizando ASP.NET MVC con las clases de Entity Framework POCO y el marco de FluentValidation. Está funcionando bien, y la validación está sucediendo como debería (como si estuviera usando DataAnnotations). Incluso he conseguido que funcione la validación del lado del cliente. Y estoy bastante satisfecho con eso.Uso de ViewModel en ASP.NET MVC con FluentValidation

Como esta es una aplicación de prueba que estoy escribiendo solo para ver si puedo obtener nuevas tecnologías trabajando juntas (y aprenderlas en el camino), ahora estoy listo para experimentar con ViewModels en lugar de solo pasar el Modelo real a la vista. Estoy planeando usar algo como AutoMapper en mi servicio para hacer el mapeo de Model to ViewModel, pero primero tengo una pregunta.

¿Cómo va a afectar esto mi validación? ¿Deberían mis clases de validación (escritas usando FluentValidation) escribirse contra ViewModel en lugar del Modelo? ¿O es necesario que suceda en ambos lugares? Una de las grandes ofertas sobre DataAnnotaciones (y FluentValidation) fue que usted podría tener la validación en un lugar que funcionaría "en todas partes". Y cumple esa promesa (principalmente), pero si empiezo a usar ViewModels, ¿no perderé esa habilidad y tendré que volver a poner la validación en dos lugares?

¿O simplemente lo estoy pensando mal?

Respuesta

4

¿O simplemente estoy pensando en ello?

Probablemente;)

Si se agrega todo el código de validación a sus ViewModels que sólo estaría validando ellos en lugar de sus modelos reales. Todo lo que realmente cambia es qué objetos pueden entrar en un estado no válido.

En este momento me complace que Pie solo valide ViewModels y luego vuelva a pasar esa información a los modelos reales y las capas DAO. Si su dominio puede entrar o no en un estado inválido es un tema polémico, pero hasta ahora esta técnica me está funcionando muy bien. Validación en un lugar y no hay objetos inválidos en mi tienda de persistencia.

Cuestiones relacionadas