Pregunta

Estoy utilizando ASP.NET MVC con las clases Entity Framework POCO y el marco FluentValidation. Se está trabajando bien, y la validación está ocurriendo como debería (como si estuviera usando DataAnnotations). Incluso he conseguido en el cliente de trabajo de validación. Y estoy muy contento con él.

Como se trata de una aplicación de prueba que estoy escribiendo sólo para ver si puedo conseguir nuevas tecnologías que trabajan juntos (y aprender a lo largo del camino), ahora estoy listo para experimentar con el uso ViewModels en vez de pasar el modelo real a la ver. Estoy pensando en usar algo como AutoMapper en mi servicio para hacer la parte de atrás adelante y hacia atrás mapeo de modelo a modelo de vista, pero tengo una pregunta.

¿Cómo va a afectar mi validación? En caso de mis clases de validación (escrito usando FluentValidation) ser escritos en contra del modelo de vista en lugar del modelo? ¿O se tiene que ocurrir en ambos lugares? Uno de los grandes acuerdos sobre DataAnnotations (y FluentValidation) era que se podía tener la validación en un solo lugar que trabajaría "en todas partes". Y cumple esa promesa (en su mayoría), pero si empiezo a usar ViewModels, no puedo perder esa capacidad y tienen que volver a poner la validación en dos lugares?

O solo estoy pensando en eso mal?

¿Fue útil?

Solución

  

O solo estoy pensando en eso mal?

Probablemente;)

Si se agrega todo el código de validación a sus ViewModels sólo serías validarlos en lugar de sus modelos reales. Toda su realidad cambiante es la que los objetos pueden entrar en un estado no válido.

Ahora estoy feliz como una tarta única validación ViewModels y luego volver de paso, que la información a los modelos reales y las capas de DAO. Sea o no su dominio puede entrar en un estado no válido es un tema polémico, pero aunque hasta ahora esta técnica está trabajando muy bien para mí. Validación en un lugar y no hay objetos no válidos en mi tienda persistencia.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top