J'essaie de décider de l'approche de validation à prendre pour un nouveau projet ASP.NET MVC. (Et wow il y a beaucoup d'options!) P>
Le projet utilise NHibernate, la première chose que j'ai considérée était le validateur de NHibernate (en raison de l'intégration serrée avec NHibernate). Cependant, autant que je sache, il n'y a que quelques avantages à cette intégration serrée: p>
1) Les schémas db générés par NHibernate comprendront des détails sur la validation (par exemple, des longueurs de colonne seront définies sur une valeur maximale autorisée dans la validation). (Cela ne m'intéresse vraiment pas vraiment, car je génère des schémas manuellement.) P>
2) NHibernate lancera une exception si vous essayez de sauvegarder des données qui ne répondent pas aux spécifications de validation. (Cela me semble assez redondant, car les données seront probablement déjà validées par le mécanisme que vous choisissez avant d'économiser de toute façon) p>
S'il y a plus d'avantages au validateur NHibernate, laissez-moi savoir! p>
Autres bibliothèques que je lisais un peu à propos de: p>
J'ai également pensé à utiliser XVal pour fournir une validation du côté client à partir du même ensemble de règles. Cependant, j'entends que ASP.NET MVC V2 comprendra quelque chose de similaire à XVal (intégration avec jQuery) hors de la boîte? Cette nouvelle fonctionnalité inclura-t-elle certaines des autres redondantes? P>
Donc, je demande essentiellement les conseils des gens sur quelle direction prendre ici. Je ne veux pas mettre en œuvre un schéma particulier, seulement avoir à le déchirer quand un autre devient la technologie dominante. P>
Qu'est-ce qui a fonctionné pour vous? Quelle option pensez-vous avoir / aura le bord? P>
merci! p>
4 Réponses :
Merci. Quel mécanisme de validation sous-jacent utilisez-vous? Château? Annotations de données?
Pas sûr de Misha, mais nous utilisons Xval + Dataannotations. J'ai construit un générateur T4 qui émet des objets commerciaux et DAL, et il met les attributs appropriés sur les membres de données.
Dataannotations, mais pour être honnête, je viens de choisir de travailler avec des dataannotations sans enquête si un autre mécanisme serait mieux. Donc, je ne sais pas pourquoi on serait mieux alors un autre.
La chose qui m'inquiète sur l'annotation des données est qu'il n'ya actuellement aucun coureur fourni par MS. Le projet XVAL semble fournir un, mais avec des mises en garde: [Devis des commentaires du code de la coureur] exécute chaque validationAttribute associée à une propriété à l'instance fournie et renvoie une erreur à l'échec de la validation. ATTENTION: Certains types de validationAttribute prétendent être valides même lorsqu'ils ne seront pas - ce coureur nécessiterait de détecter ces cas particuliers si vous envisagez de compter sur elle. Heureusement, d'autres coureurs de validation ... Signalez toutes leurs erreurs correctement. [/Citation]
DataNannotations implémentées par classes de pote et Validation du client JQuery P>
Assurez-vous que vous utilisez Aperçu de MVC 2 P>
Ouais, cela ressemble à ce qu'il s'agisse du choix par défaut en v2 ne le fait-il pas. Je me demande si ce n'est que si c'était la voie MS avec des annotations de données, plutôt que de réelles meilleures pratiques.
J'ai utilisé fluentvalidation avec JQuery Validation Plugin et ne peut toujours pas trouver une situation qu'ils ne peuvent pas gérer. P>
Cela semble très intéressant, merci d'avoir posté. Je vais faire un look plus profond plus tard - Premier coup d'œil semble que cela pourrait être valable pour la validation des règles d'entreprise. La validation de données de base peut être un peu plus verbeuse, mais pas une grosse affaire. Savez-vous comment bien cette configuration gère l'internationalisation?
Pour I18N, vous pouvez mettre tous les messages dans un fichier de ressources et les utiliser dans la méthode FLUENTVALIDATION SANSAGES.
J'ai accepté cela comme la réponse, car c'est une bibliothèque que je n'ai pas vue auparavant. Ça a l'air bien et je cherche à l'implumer maintenant.
Darin, avez-vous des informations que vous partageriez sur la manière d'intégrer la validation fluentevalidation et jQuery? À titre d'exemple, j'imagine que ce serait bien d'utiliser les mêmes messages pour les règles validées sur les côtés du client et du serveur.
Vous pourriez être intéressé par cet approche délégué . J'étais parce que je ne l'ai pas aimé l'idée xVal (la solution im va actuellement avec) et le fait qu'il ne semble pas répondre aux cas complexes de validation qui ont traversé plusieurs propriétés identiques ou même différentes structures de classe. P >