Question

J'utilise ASP.NET MVC avec des classes Entity Framework POCO et le cadre de FluentValidation. Il fonctionne bien, et la validation se passe comme il se doit (comme si j'utilisais DataAnnotations). J'ai même obtenu travail de validation côté client. Et je suis assez satisfait.

Puisque c'est une application de test que je vous écris juste pour voir si je peux obtenir de nouvelles technologies qui travaillent ensemble (et les apprendre sur le chemin), je suis maintenant prêt à expérimenter l'utilisation ViewModels au lieu de simplement passer le modèle réel à la vue. Je prévois utiliser quelque chose comme AutoMapper dans mon service pour faire le retour de la cartographie et-vient du modèle à ViewModel mais j'ai une question.

Comment cela va affecter ma validation? Si mes cours de validation (écrit en utilisant FluentValidation) être écrit contre le ViewModel au lieu du modèle? Ou at-il besoin de se produire dans les deux endroits? L'une des grandes affaires sur DataAnnotations (et FluentValidation) était que vous pourriez avoir la validation en un seul endroit qui fonctionnerait « partout ». Et il remplit cette promesse (la plupart du temps), mais si je commence à l'aide ViewModels, ne pas que je perdre cette capacité et doivent revenir à mettre la validation en deux endroits?

Ou suis-je en train de penser à ce mal?

Était-ce utile?

La solution

  

Ou suis-je en train de penser à ce mal?

Probablement;)

Si vous ajoutez tout le code de validation à votre ViewModels vous voulez juste être au lieu de les valider vos modèles réels. Tous vos vraiment changer est que les objets peuvent entrer dans un état non valide.

En ce moment je suis heureux que la tarte ne validant ViewModels et en faisant passer ce retour d'information aux modèles réels et des couches de DAO. Que ce soit ou non votre domaine peut entrer dans un état non valide est un sujet controversé bien mais jusqu'à présent, cette technique fonctionne très bien pour moi. Validation en un seul endroit et pas d'objets non valides dans mon magasin de persistance.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top