2010-06-14 14 views
4

J'ai une situation dans laquelle je chargerai des données invalides. J'utilise un DataForm pour éditer les données et je dois forcer une validation. L'utilisateur ne peut normalement pas éditer les champs qui ne sont pas valides mais avant de sauvegarder l'entité, je voudrais informer l'utilisateur qu'il doit être édité. Mais la validation ne semble pas se déclencher sauf si la propriété est réellement modifiée. Existe-t-il un moyen de forcer une entité à exécuter toutes les règles de validation côté client?Validation forcée de l'entité ria dans Silverlight 4

Shane Holder

Répondre

0

J'ai trouvé ce problème exact. Je me suis retrouvé mis en œuvre INotifyDataErrorInfo sur mon viewmodel (en fait dans une classe de base) et de valider le contexte de validation comme si ...

// Clear any validation errors already registered 
CurrentUser.ValidationErrors.Clear(); 

var validationResults = new List<ValidationResult>(); 
ValidationContext vcontext = new ValidationContext(CurrentUser, null, null); 

// Validate the User; the results are added to our list of validationResults 
Validator.TryValidateObject(CurrentUser, vcontext, validationResults); 

// Add the errors to the entities validation error list 
foreach (var res in validationResults) 
{ 
    CurrentUser.ValidationErrors.Add(res); 
} 

Je ne me souviens pas du haut de ma tête, mais si ce n » t déclencher les ValidationStates sur votre vue (c'est-à-dire une bordure rouge sur la zone de texte), ajouter les erreurs à la collection ValidationErrors du viewmodel (créée dans l'implémentation de INotifyDataErrorInfo).

// Add the errors to the viewmodel's validation error list 
foreach (var res in validationResults) 
{ 
    CurrentUser.ValidationErrors.Add(res); 
} 
0

Je ne sais pas si je undertood correctement ce que vous voulez achive ...

Si vous ajoutez un validateur personnalisé sur le serveur et Renommez le fichier de classe comme whatever.shared.cs que partagée indique au compilateur (?) d'ajouter que validateur à exécuter sur le client ...

Jetez un oeil à this post

espoir qui aide ...