IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Silverlight Discussion :

RIA et Validation, empêcher l'insert d'un objet non validé


Sujet :

Silverlight

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Mozofeuk
    Inscrit en
    Novembre 2007
    Messages
    326
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 326
    Par défaut RIA et Validation, empêcher l'insert d'un objet non validé
    Bonjour à tous,

    J'essaye d'implémenter la validation sur un petit formulaire d'ajout. J'ai donc un Grid contenant toutes les textbox, datepicker ... Bindés sur mon objet à insérer. Quand je met un string dans la textbox à la place d'un int j'ai bien l'erreur en rouge qui apparaît avec le texte mais rien ne m’empêche d'ajouter quand même mon Objet (mal constitué) à mon DataContext, ce qui fait que bien sur l'ajout plante du coté serveur, or la validation devrai rester coté clients non ?

    Y'a t-il un moyen de détecter si oui ou non la constitution de l'objet est bonne ? Je veux dire, graphiquement on voit bien que l'erreur est levée mais comment savoir si il reste des erreur sur l'objet avant de l’insérer en base ?

    Cordialement MoZo

  2. #2
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2011
    Messages : 82
    Par défaut
    Bonjour,
    place ton formulaire dans un Dataform, abonne toi ensuire au EditEnded pour regarder si ton entite est valide ou non.

  3. #3
    Membre émérite
    Homme Profil pro
    Développeur / architecte
    Inscrit en
    Juillet 2009
    Messages
    473
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur / architecte

    Informations forums :
    Inscription : Juillet 2009
    Messages : 473
    Par défaut
    Comme dit le schtroumpf grognon: moi j'aime pas le dataform ! (surtout parce que je capte pas tout de la mécanique du beginedit/endedit)
    Par contre j'ai trouvé sur le blog de Jonathan Antoine ce petit bout de code qui me sert à appeler la validation côté client.

    Ensuite je me suis même fait une petite méthode d'extension côté client, qui me permets d'appeler ce code sur n'importe quelle entité:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    using System.ComponentModel;
     
    namespace System.ServiceModel.DomainServices.Client
    {
        public static class EntityValidationExtension
        {
     
            public static bool Validate(this Entity entity_to_validate)
            {
                return ValidationHelper.ValidateItem(entity_to_validate);
            }
        }
    }

    A+

  4. #4
    Membre éclairé Avatar de Mozofeuk
    Inscrit en
    Novembre 2007
    Messages
    326
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 326
    Par défaut
    Merci de vos réponse,

    Y'a t-il moyen d'utiliser un Dataform mais sans que les champs soit générés de manière automatique ?

    Ils y a des champs que je veux laisser invisibles, des liaisons à d'autres entités que je veux réaliser à l'aide de ComboBox plutôt que de devoir rentrer l'id...

    Sinon chrisdot, pour le bout de code de Jonathan je vois pas trop ce que c'est que le "out ICollection<ValidationResult> validationResults"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    public static bool ValidateItem(Entity dataToValidate, 
          out ICollection<ValidationResult> validationResults)
    {
      if (dataToValidate == null) 
         throw new ArgumentNullException("dataToValidate");
     
      validationResults = new List<ValidationResult>();
      ValidationContext context = new ValidationContext(dataToValidate, null, null);
      Validator.TryValidateObject(dataToValidate, context, validationResults, true);
      dataToValidate.ValidationErrors.Clear();
      foreach (var res in validationResults)
      {
          dataToValidate.ValidationErrors.Add(res);
      }
      return validationResults.Count == 0;
    }

  5. #5
    Membre émérite
    Homme Profil pro
    Développeur / architecte
    Inscrit en
    Juillet 2009
    Messages
    473
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur / architecte

    Informations forums :
    Inscription : Juillet 2009
    Messages : 473
    Par défaut
    Pour ce qui est du dataform, oui tu peux préciser son layout... Tu peux d'inspirer de cet article..

    Sinon, pr l'autre point, c'est le "out" le problème? A ce moment là, c'est juste une question de C#. Vois ici.


    A+

  6. #6
    Membre éclairé Avatar de Mozofeuk
    Inscrit en
    Novembre 2007
    Messages
    326
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 326
    Par défaut
    Ok merci, mais là du coup il faut que je lui passe un "ICollection<ValidationResult>" que j'aurai moi même créé ?

    Car j'ai réussi à ajouter la méthode d'extension mais elle me renvoi toujours true.

    Pour ta méthode j'ai été obliger de changer car la fonction de Jonathan prend 2 arguments (mais c'est surement ça qui fait rater la fonction):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public static class EntityValidationExtension
        {
            public static bool Validate(this Entity entity_to_validate)
            {
                ICollection<ValidationResult> a;
                return ValidationHelper.ValidateItem(entity_to_validate, out a);
            }
        }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] "Nom d'objet non valide"
    Par BleuTrèsFoncé dans le forum Accès aux données
    Réponses: 1
    Dernier message: 05/03/2013, 17h35
  2. Nom d'objet non valide
    Par sleeg dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 18/10/2011, 12h32
  3. Trigger INSERT : nom de colonne non valide
    Par arthuro45 dans le forum Développement
    Réponses: 6
    Dernier message: 13/09/2010, 21h58
  4. Réponses: 5
    Dernier message: 23/06/2009, 14h05
  5. Nom d'objet non valide
    Par dvi24 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 09/04/2008, 11h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo