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 Ajax Discussion :

Envoyer un tableau des tableaux en ajax mvc3


Sujet :

ASP.NET Ajax

  1. #1
    Nouveau candidat au Club
    Femme Profil pro
    Développeur Web
    Inscrit en
    Avril 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2012
    Messages : 2
    Par défaut Envoyer un tableau des tableaux en ajax mvc3
    Bonjour,
    J’ai un problème en passant à l’action un array des arrays en ajax :
    Model :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
        public class SJSonModel
        {
            public string Name { get; set; }
            public bool isChecked { get; set; }     
        }
     
        public class SJSonModelList
        {
            public List<SJSonModel> Features { get; set; }
            public List<SJSonModel> MenuItems { get; set; }
        }
    Controller :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
            [HttpPost]
            public ActionResult CheckPreferences(SJSonModelList postData)
            {
                BindUserFeatures(postData.Features);
     
                return Json(new { status = "Success", message = "Passed" });
            }
    View (simplifié, j’ai enlevé les infos dynamiques):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
        <div class="Feature borderRadius Items">
            <h2>Title
                <input type="checkbox" class="Item" name="featureName"/>
     </h2> 
    	    <img src="url" alt="" /> 
     
    	    <div class="FeatureDetails subItems">                 
                <a href="@Url…">featureName</a>
                <input type="checkbox" class="subItem" name="subItemName"/>
              </div> <!-- endOf FeatureDetails -->
        </div> <!-- endOf Feature -->

    Code JQuery :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
            var isChecked = false;
            var features = new Array();
            var menuItems = new Array();
            var postData = new Array();
    {ici je remplis les features, menuItems et je donne une valeur au isChecked selon les checkbox cochés/décochés }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    menuItems.push({ "Name": $(this).attr('name'), "isChecked": isChecked });
    features.push({ "Name": $(this).attr('name'), "isChecked": isChecked });
     
    postData.push({ "features": features, "menuItems": menuItems });
    postData = JSON.stringify(postData);
    partie ajax :
    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
            $(':submit').click(function () {
     
                postData.push({ "features": features, "menuItems": menuItems });
                postData = JSON.stringify(postData);
     
                $.ajax({
                         url: '@Url.Action("CheckPreferences")',
                         type: 'POST',
                         data: postData, 
                         contentType: "application/json; charset=utf-8",
                         dataType: "json",
                         traditional: true,
                          success: function () { window.alert('@Resource.AjaxSuccess'); },
                         error: function (event, request, settings) {  window.alert('@Resource.AjaxError' + ' : ' + settings); },
                         timeout: 20000
                }); //endOf $.ajax
            }); //endOf :submit.click function
    Côté client quand je fait alert(postData), il contient bien les données cochées / décochées avec les bonnes valeurs de isCheched pour chacun mais côté controlleur la valeur de Features et de MenuItems est null à chaque fois, alors que quand je passe juste l’un des arrays au controlleur :
    Ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     features = JSON.stringify(features);
    dans ajax :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {… data: features,…}
    Et dans controlleur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     ActionResult CheckPreferences(IEnumerable<SJSonModel> features)
    Tout marche très bien.

    Est-ce que quelqu'un voit où est le problème?

    Merci d’avance.

  2. #2
    Nouveau candidat au Club
    Femme Profil pro
    Développeur Web
    Inscrit en
    Avril 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2012
    Messages : 2
    Par défaut Solution
    Au cas où ça intéresserait quelqu’un: au lieu d'envoyer les deux arrays en même temps en postData il fallait les envoyer séparement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $.ajax{...
                            data: {
                                menuItems: JSON.stringify(menuItems),
                                features: JSON.stringify(features)
                            },
    .....
    }
    et donc l'action dans constructeur devient:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     public ActionResult CheckPreferences(string menuItems, string features){...}

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

Discussions similaires

  1. tableau des tableaux
    Par maryem_kh dans le forum Débuter
    Réponses: 13
    Dernier message: 21/02/2013, 11h34
  2. [iText] Tableau contenant des tableaux
    Par drizztoli dans le forum Documents
    Réponses: 2
    Dernier message: 01/09/2010, 21h51
  3. Tableau dont les éléments sont des tableaux
    Par tpdm dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 27/01/2010, 19h02
  4. Envoyer un tableau javascript avec AJAX
    Par matteli dans le forum Général JavaScript
    Réponses: 16
    Dernier message: 18/10/2008, 15h20
  5. [Tableaux] envoyer un tableau à smaty
    Par mohican13 dans le forum Langage
    Réponses: 1
    Dernier message: 10/02/2006, 08h23

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