asp.net-mvc - paginas - razor pages vs mvc
ValidaciĆ³n: modelo o modelo de vista (3)
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.
¿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.
¿Qué pasa con la validación compleja / personalizada?
Yo diría que a menudo es necesario validar en todos los niveles :)
Estuve pensando por un tiempo sobre lo siguiente:
- Validación de entrada del usuario: definitivamente en el controlador, no en ningún tipo de modelo. Ejemplo: Captcha .
- 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 .
- La validación de reglas de negocio definitivamente entra en la validación del modelo. Ejemplos: Correo electrónico obligatorio , el cupón de descuento debe ser válido .
- Potencialmente Use-Case (historia, escenario, etc.) validación. 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 gratis durante una semana si no se ha realizado ningún pedido para el período determinado .
NOTA: Incluí el correo electrónico requerido en 2 y 3, ya que a menudo depende de dónde 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 la entendemos.
Pero también debe aplicarse. 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:) ...
Aclamaciones,
Dmitriy.
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.