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

C# Discussion :

JSON & C#


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Septembre 2011
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2011
    Messages : 142
    Par défaut JSON & C#
    Bonsoir,

    J'ai un objet composé de cette manière :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    postAjax = {
        ProjetID: projetIdentifiant,
        URL: url,
        LoginAdmin: login,
        MdpAdmin: motDePasse,
        EchangeIP: echangeIP,
        EchangePort: echangePort,
        ConcentrateurNumero: concentrateurNumero,
        ConcentrateurType: concentrateurType,
        TemplatePlan: templatePlan,
        TemplateEquipement: templateEquipement,
        Langues: lesLangues,
        OptionsMetiers: lesOptionsMetiers
    };
    Où Langues et OptionsMetiers sont des tableaux.

    Quand je demande de visualiser le contenu poster en ajax, j'ai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "ProjetID":"test","URL":"","LoginAdmin":"","MdpAdmin":"","EchangeIP":"","EchangePort":"","ConcentrateurNumero":"","ConcentrateurType":"","TemplatePlan":"","TemplateEquipement":"","Langues":[{"$id":"1","ID":1,"Intitule":"Français","Code":"FR"}],"OptionsMetiers":[{"$id":"1","ID":1,"Intitule":"Rondier"},{"$id":"2","ID":2,"Intitule":"Access"},{"$id":"4","ID":4,"Intitule":"Intrusion"},{"$id":"5","ID":5,"Intitule":"Vidéo"}]}
    Or C# refuse ce modèle

    je reçois l'erreur
    {"$id":"1","Message":"La demande n’est pas valide.","ModelState":{"$id":"2","projet.OptionsMetiers[0].ID":["Error reading object reference '1'. Path 'OptionsMetiers[0].ID', line 1, position 279."]}}
    Si quelqu'un a une idée

  2. #2
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Septembre 2011
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2011
    Messages : 142
    Par défaut
    Le problème viendrait du json crée.

    Quand je sélectionne une valeur de mon premier tableau si le $id (du json) a le même $id qu'une valeur dans le deuxième tableau, c# rejette la requête par la méthode :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if (ModelState.IsValid)
                {
                    ...
                }
    je ne vois pas comment je peut modifier cette valeur crée par JSON.stringify()...

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Septembre 2011
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2011
    Messages : 142
    Par défaut
    J'ai essayé de modifier les noms des ID de mes tables, mais cela n'a rien changé, et également changé les incrément par défaut des tables.

    Mon problème c'est sur la validation du modèle.

    J'ai ajouté la ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var errors = ModelState.Values.SelectMany(v => v.Errors);
    avant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (ModelState.IsValid) { ... }
    Il n'arrire pas à mapper les valeurs pour la table OptionsMetiers.

    Voici ce que me renvoie le debuggeur :

    Nom : Capture1.PNG
Affichages : 230
Taille : 42,4 Ko

    Et voici le modèle :

    Nom : Capture2.PNG
Affichages : 278
Taille : 20,6 Ko

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Septembre 2011
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2011
    Messages : 142
    Par défaut
    Le problème est réglé.

    Cela venait à la base du tableaux de valeurs renvoyé en c# qui ajoute un champ $i en plus de mes champs de table.

    En le supprimant tout fonctionne.

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

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