2008-10-20 6 views

Répondre

18

Les règles/validations spécifiques au domaine doivent figurer dans le modèle. Vous pouvez avoir un model.validate() pour vous informer si les règles ne sont pas violées. Regardez les classes du modèle Rails (ActiveRecord) pour une bonne implémentation de ce concept.

La vue devrait empêcher l'utilisateur de saisir une entrée non valide. Donc, la classe «entrée d'une chaîne de caractères pour une valeur numérique» des erreurs de saisie doit être écrasée avant d'atteindre le présentateur. Il peut y avoir une duplication des validations entre le modèle et la vue. Par exemple. AttributeX doit être compris entre 1 et 100. Cela doit être validé dans le modèle. En même temps, vous pouvez insérer un compteur dans l'interface utilisateur avec la plage minValue et maxValue définie sur 1-100.

+0

Pourriez-vous s'il vous plaît répondre http://stackoverflow.com/questions/8851933/event-bubbling-and-mvp-asp-net? – Lijo

0

Présentateur ....

La vue aurait dû avoir des "widgets" qui empêchent l'entrée non valide lorsque cela est possible.

3

Je garde généralement ma vue complètement propre, pas de logique là-bas. Mais je ne fais pas beaucoup de développement web. Dans les situations Ajax-ish vous pouvez avoir une validation côté client qui doit aller dans la vue.

La validation de la logique métier est incluse dans le modèle. Avec la validation de la logique applicative, j'entends par exemple la vérification de la taille minimale des commandes, etc.

La validation de l'entrée se fait dans le présentateur. Cela peut être des choses comme vérifier si un champ de nombre ne contient pas de caractères non numériques. Mais en fonction de votre situation, cela peut aussi signifier vérifier si des fichiers existent etc.

Dans les cas plus complexes où la validation devrait être réutilisable à différents endroits, je la sépare habituellement en un moteur de validation qui peut être appelé à différents endroits. Cela résout certains problèmes de duplication du code de validation utilisé dans la couche de présentation ainsi que dans la couche de persistance par exemple.

+0

C'est l'approche que nous avons adoptée - nous avons notre validation dans un paquet partagé afin que nous puissions vérifier l'entrée deux fois: une fois dans le client afin que nous puissions informer l'utilisateur immédiatement si entrée invalide, et encore une fois dans le serveur pour s'assurer l'utilisateur ne triche pas. –

Questions connexes