La plupart des astuces sur la mise en œuvre de la validation dans ASP.NET MVC semblent se centrer autour du modèle (création de couches de service entre modèle et contrôleur ou propriétés de décoration du modèle avec attributs de validation) .Validation sur ViewModels dans ASP.NET MVC
Dans mon application, j'utilise ViewModels pour toutes les communications entre les contrôleurs et les vues.
J'ai un ViewModel pour ma page de connexion appelée 'LoginViewModel' avec une propriété appelée 'EmailAddress'. Lorsque l'utilisateur entre son adresse e-mail et clique sur Envoyer, ce ViewModel est rempli et envoyé au contrôleur, où l'adresse e-mail est validée.
Il doit s'agir d'une adresse e-mail valide et l'utilisateur doit provenir d'un domaine enregistré auprès du système.
Quel serait un moyen pratique d'ajouter une validation à cela? Dois-je mettre la validation dans le ViewModel lui-même? Ou devrait-il rester dans le contrôleur?
Bonnes idées, Keith! En ce moment, j'ai la même stratégie que vous - l'intégration de modèles dans ViewModels. Ce que je voudrais, c'est que Model et ViewModels puissent implémenter la validation de la même manière, et qu'un framework JS tel que xVal puisse fonctionner de manière transparente avec l'un ou l'autre. Ce serait le moyen le plus flexible. Je ne pense pas que la validation devrait être exclusivement liée au modèle. – Jonathan
J'ai également utilisé des modèles de vue personnalisés avec des classes de modèles incorporées, y compris xVal. Cependant, il y a des cas où j'ai besoin que mon viewmodel ne contienne qu'un sous-ensemble des propriétés du modèle. Je regarde actuellement Automapper pour cartographier ces modèles. Cela fonctionne bien, mais comment utiliser xVal dans ce scénario? Décorer le ViewModel avec l'attribut MetaData ne fonctionne pas puisque AssociatedMetadataTypeTypeDescriptionProvider renvoie si l'objet metadata contient des propriétés qui ne font pas partie du viewmodel. Si vous utilisez Automapper, j'aimerais savoir comment vous avez résolu ce problème. –