2010-11-01 12 views

Respuesta

4

validación debe hacerse mínima a la vista del modelo porque esto es lo que recibe como argumento de la acción y contiene la entrada del usuario. También podría tener validación en el modelo.

1

Mi respuesta sería ViewModel porque el modelo puede cambiar (por ejemplo, de usar Linq2SQL a EF). De esta forma, cuando conectas otro Modelo, tu validación permanece intacta.

1

Personalmente tengo mi validación 2 lugares usando DataAnnotations. Mi modelo no se pasa completamente a mi vista. Tengo modelos separados para mis vistas y traduzco los datos del modelo de vista al modelo. De esta manera, puedo poner lo que quiera en mi modelo de vista y dejar de lado las piezas con las que no quiero tratar.

Mi razonamiento, sin embargo, es que tengo una aplicación de Windows y una aplicación web que usan el mismo modelo. De esta forma, el mismo conjunto de reglas de validación rige el Modelo para todas las aplicaciones, y mi modelo de vista puede tener reglas ligeramente diferentes si es necesario. Por supuesto, esto crea una "duplicación de lógica", bueno, lógica de validación.

De esta manera, no tengo que reconstruir los datos que no se usaron en la página cada vez que regreso al servidor o los coloco en campos ocultos e inflando el tamaño de mis páginas.

0

El modelo debe implementar la validación que necesita para garantizar que su estado no se vuelva inválido; esa validación definitivamente pertenece al modelo. por ejemplo, una clase de libro debe garantizar que su título debe tener entre 1 y 50 caracteres, su id debe ser> = 0 etc.

las reglas comerciales pertenecen a otra parte (en sus controladores si solo tiene la vista de modelo y el controlador) capas). esto podría ser algo así como que un usuario no puede agregar más de 3 libros si no se verifica su correo electrónico.

la validación en la vista debe restringirse a analizar la entrada del usuario para datos no válidos: anti xss, sql injection, out of range. etc.

1

Debe poner la validación que es específica para la interfaz de usuario en el modelo de vista y todo lo relacionado con la validación de procesos de negocio o bases de datos en el modelo. Estos pueden superponerse.

+0

gracias por el comentario, entonces ¿usaré las anotaciones de datos para el modelo y el modelo de vista? (atributos) – Martin

Cuestiones relacionadas