Je dirais qu'il est souvent nécessaire de valider à tous les niveaux :)
je pensais pendant un certain temps au sujet suivant:
- validation des entrées utilisateur: sans aucun doute sur le contrôleur, pas sur tout type du modèle. Exemple: Captcha.
- Afficher les données associées validées sur le ViewModel (pas dans le ViewModel, mais sur le ViewModel). Exemples: Confirmation de mot de passe, E-mail requis.
- La validation des règles métier passe définitivement à la validation du modèle. Exemples: E-mail requis, Le coupon de réduction doit être valide.
- Validation potentielle d'utilisation (scénario, scénario, etc.). Il ne valide pas les attributs, mais valide l'exactitude de l'ensemble du processus. Devrait aller à la validation du modèle (ou mieux dans une couche distincte). Exemple: Seulement 3 articles peuvent être obtenus gratuitement pendant une semaine si aucune commande n'a été mis pour la période donnée.
NOTE: J'inclus le requis Courriel à la fois 2 et 3 comme cela dépend souvent là où il appartient.
Si le courrier électronique joue uniquement un rôle informatif, la validation peut être relâchée et la pousser vers le modèle de vue. Si l'email est une exigence forte pour l'application - c'est définitivement la validation du modèle.
La 4ème chose n'a en fait rien à voir avec la validation telle que nous la comprenons.
Mais il devrait également être appliqué. Ainsi, son résultat devrait être affiché à l'utilisateur.
Fondamentalement, tous les 4 types de validation peuvent utiliser la même infrastructure. Mais la mise en œuvre dépend:) ...
Cheers,
Dmitriy.
Marque mvvm? Le viewmodel de MVC ne sont pas les viewmodels du pattern MVVM. –
MVVM est largement basé sur le modèle MVC, mais j'apprécierais que vous expliquiez votre commentaire (avec quelques liens, peut-être). –