2009-08-10 21 views
24

¿Dónde debe residir la validación al usar ViewModels con MVC (MVVM), en el modelo o en el modelo de vista? (O ambos o ninguno)? ¿Y por qué? Lo menciono especialmente a la luz de la V2 de ASP.NET MVC que saldrá pronto.Validación: modelo o modelo de vista

¿Qué pasa con la validación compleja/personalizada?

+2

mvvm tag? El modelo de vista de MVC no son los modelos de vista del patrón MVVM. –

+0

MVVM se basa en gran medida en el patrón MVC, pero le agradecería que explicara su comentario (con algunos enlaces, tal vez). –

Respuesta

19

Cualquier validación específica del negocio debe estar en el Modelo. Cualquier validación específica del sitio web podría hacerse tanto en el modelo como en el modelo de vista. De esta manera, su lógica de negocios (Modelos) puede moverse detrás de una interfaz diferente (Windows, Formularios Web, etc.) y su validación permanecerá intacta.

5

Modelo. Su validación debe estar en su capa de negocios. Su modelo de vista debe ser solo para obtener la configuración de su vista.

11

diría que a menudo es necesaria para validar a todos los niveles :)

que estaba pensando un rato sobre lo siguiente: la validación de entrada

  1. usuario: definitivamente en el controlador, no en cualquier tipo de modelo. Ejemplo: Captcha.
  2. Ver datos relacionados validados en ViewModel (no en el ViewModel, sino en el ViewModel). Ejemplos: Confirmación de la contraseña, Correo electrónico requerido.
  3. La validación de reglas de negocio definitivamente entra en la validación del modelo. Ejemplos: Correo electrónico requerido, El cupón de descuento debe ser válido.
  4. Validación de caso de uso potencial (historia, escenario, etc.). No valida los atributos, pero valida la corrección de todo el proceso. Debe ir a la validación del modelo (o mejor en una capa separada). Ejemplo: Solo se pueden obtener 3 artículos de forma gratuita durante una semana si no se ha realizado ningún pedido para el período dado.

NOTA: I incluyó el Obligatorio Email en tanto 2 y 3, ya que a menudo depende de donde pertenece.
Si el correo electrónico solo desempeña un papel informativo, la validación se puede relajar y llevarlo al modelo de visualización. Si el correo electrónico es un requisito importante para la aplicación, definitivamente es la validación del modelo.

La cuarta cosa no tiene nada que ver con la validación tal como lo entendemos.
Pero también se debe aplicar. Por lo tanto, su resultado debe mostrarse al usuario.

Básicamente, los 4 tipos de validación pueden usar la misma infraestructura. Pero la implementación depende de:) ...

Cheers,
Dmitriy.

Cuestiones relacionadas