2011-03-22 9 views
0

Je dois être en mesure de valider certains contrôles et je ne suis pas sûr de la meilleure façon de procéder. Une partie de la validation devrait être tout le temps comme vérifier la longueur de la chaîne sur certaines propriétés. Cela semblait être assez facile.Silverlight 4 Validation conditionnelle

Je dois être en mesure de vérifier les champs obligatoires, mais cette application devrait permettre une sauvegarde partielle, donc je dois être en mesure de vérifier certaines conditions (par exemple une case à cocher sur l'écran) et si cette condition est remplie , puis validez, mais autorisez la sauvegarde si la case n'est pas cochée.

Je l'ai mis en œuvre via un validateur personnalisé et tout fonctionne bien côté client, mais une fois que j'essaie d'enregistrer, la validation est vérifiée sur le côté serveur et il jette une exception.

J'utilise des annotations EF w/data sur les métadonnées RIA pour marquer les propriétés avec les validateurs.

Si quelqu'un peut me diriger dans la bonne direction sur la façon d'accomplir cela, je l'apprécierais.

+0

Quel type d'exception est lancé et est-ce un comportement correct ou pas? Je sais comment utiliser l'interface INotifyDataErrorInfo, et pour moi, c'est une meilleure méthode de validation. – vorrtex

+0

Supprime les annotations du modèle d'entité. Je ne les mets pas là de toute façon. Je mets des annotations sur mes modèles d'affichage/saisie. –

Répondre

0

Si vous faites vos validations dans votre viewmodel sur le setter de propriétés, vous pouvez conditionnellement juste jeter des exceptions, si votre xaml est lié w/ValidatesOnExceptions = True vous devriez obtenir le comportement que vous voulez.

0

Il semble que vous ayez implémenté CustomValidation côté client.

Vous devez créer cette CustomValidation classe sur côté serveur dans un fichier « de .shared.cs », de sorte que le customvalidation est disponible à la fois sur le serveur et le client. RIA va répliquer ce validateur sur le client.

Assurez-vous d'avoir une propriété sur votre classe de modèle (peut-être une propriété supplémentaire?) Et liez votre checkBox à cette propriété. Le serveur saura quel type de validation sera utilisé. Et enfin, utilisez votre customvalidation sur la classe de métadonnées RIA côté serveur! encore une fois, RIA répliquera cette validation sur le client.