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

ASP.NET MVC Discussion :

Comparer un champs extrait d'un string avec une valeur passée par formulaire [Débutant]


Sujet :

ASP.NET MVC

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Goltar
    Homme Profil pro
    Eternel Etudiant Curieux
    Inscrit en
    Mars 2011
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Eternel Etudiant Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mars 2011
    Messages : 216
    Par défaut Comparer un champs extrait d'un string avec une valeur passée par formulaire
    Bonjour à tous,
    Je bloque sur un simple cas d'école. Je m'explique:
    J'ai un formulaire qui me génère une simple ligne dans un fichier par le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    [HttpPost]
            public ActionResult Inscription(Utilisateur U)
            {
                object ecrit = new {User = U.User, Titre= U.Titre, Nom = U.Nom, Prenom=U.Prenom, Email = U.Email, Pays= U.Pays,
                    Ville = U.Ville, DateNaiss = U.DateNaiss, Mdp = U.Mdp, News=U.News };
     
                string JsonData = Newtonsoft.Json.JsonConvert.SerializeObject(ecrit);
                System.IO.File.WriteAllText(path + "/fichier/info.json", JsonData);
     
                return View("Inscription", U);
            }
    Ce qui me donne le fichier info.json:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {"User":"PseudoUser","Titre":1,"Nom":"SonNom","Prenom":"SonPrenom","Email":"email@skynet.be","Pays":null,"Ville":null,"DateNaiss":"1958-11-01T00:00:00","Mdp":"12AZER@","News":true}
    Je tente pour un login de comparer certains champs de mon formulaire de login a ceux récuperer dans le fichier Json en le désérialisant par:
    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
     
    [HttpPost]
            public ActionResult Login(Membre M)
            {
                object test = new { Nom = M.Nom, Mdp = M.Mdp };
     
                string ecrit = System.IO.File.ReadAllText(path + "/fichier/info.json");
     
                Dictionary<string, string> dico = new Dictionary<string, string>();
                string[] items = ecrit.TrimEnd(',').Split(',');
                foreach (string item in items)
                {
                    string[] keyValue = item.Split(':');
                    dico.Add(keyValue[0], keyValue[1]);
                }
    par contre je ne voit pas comment comparer les champs "Nom" du formulaire avec celui du fichier et la même chose pour le "Mdp"

    Pourriez-vous me mettre sur la voie s.v.p

  2. #2
    Membre Expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Par défaut
    Salut,

    tu charges tes key/value dans un Dictionnary<T, T>, tu peux donc utiliser son indexer comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string maval = monDico["maClef"];

  3. #3
    Membre éclairé Avatar de Goltar
    Homme Profil pro
    Eternel Etudiant Curieux
    Inscrit en
    Mars 2011
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Eternel Etudiant Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mars 2011
    Messages : 216
    Par défaut
    Merci pour ta réponse jopopmk,
    En effet c'est bien comme ça que j'avais essayé précédemment entre autre j'ai également essayé avec dico[2] et bien d'autres mais la valeur reste désespéramment a "null".

  4. #4
    Membre Expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Par défaut
    Re,

    tu fais bien ta comparaison dans la même fonction ? (car ton dico est local).
    Sinon, quand tu passes en debug pas-à-pas, après ton foreach ton dico est correctement rempli ?

  5. #5
    Membre éclairé Avatar de Goltar
    Homme Profil pro
    Eternel Etudiant Curieux
    Inscrit en
    Mars 2011
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Eternel Etudiant Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mars 2011
    Messages : 216
    Par défaut
    Bonjour,
    Oui mon dico est rempli, et je compare bien dans le même fonction.
    Par contre les éléments du dico sont sous la forme "\"Nom\"", "\"Valeur\"" ? j'ai essayer de faire un .replace ""\","" mais cela ne change rien !

  6. #6
    Membre Expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Par défaut
    Ah ben oui, j'avais pas fait gaffe ! Le Split va pas te nettoyer les doubles-quotes de ton JSON.
    Petite remarque : si ton Dictionnary n'est que local, ne serait-il pas plus simple (et logique) de faire tes comparaisons directement dans le foreach plutôt que de remplir ta collection pour la reparcourir par la suite ?
    Pour le Replace il faut voir que ça ne réécrit pas la string appelante, la modification est apportée sur une nouvelle instance renvoyée par la fonction.

    Pour résumer tu pourrais faire un truc du genre :
    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
    string ecrit = System.IO.File.ReadAllText(path + "/fichier/info.json");
    string[] items = ecrit.TrimEnd(',').Split(',');
    foreach (string item in items) {
      string[] keyValue = item.Split(':');
      // on vérifie qu'on a bien une clé ET une valeur
      if (keyValue.length == 2) {
        string realKey = keyValue[0].Replace("\"", "");
        string realValue = keyValue[1].Replace("\"", "");
        switch (realKey) {
          case "User": txtUser.Text = realValue; break;
          case "Nom": txtNom.Text = realValue; break;
          // et ainsi de suite
        }
      }
    }

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 07/07/2010, 14h51
  2. Réponses: 3
    Dernier message: 15/05/2009, 11h49
  3. comparer le contenu d'un champs text avec une valeur
    Par mystro7200 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 18/07/2008, 10h06
  4. champ avec une valeur?
    Par sonialem2000 dans le forum Bases de données
    Réponses: 2
    Dernier message: 22/06/2004, 08h23
  5. Réponses: 2
    Dernier message: 29/03/2004, 13h44

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