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 :

ASP.Net MVC - JQuery Ajax call avec tableau JSON en param�tre


Sujet :

ASP.NET MVC

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    D�veloppeur .NET
    Inscrit en
    Mars 2011
    Messages
    40
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : D�veloppeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2011
    Messages : 40
    Par d�faut ASP.Net MVC - JQuery Ajax call avec tableau JSON en param�tre
    Bonjour,

    J'ai besoin de faire u appel Ajax � une action de mon controller (jusque l� rien de bien sorcier).

    Et j'ai besoin de passer un tableau d'entiers (identifiants) en param�tre de cette action.

    Mais quoi que je fasse, lorsque l'action est appel�e, le param�tre est null.

    Comment puis-je r�cup�rer la valeur pass�e en param�tre (qui apparemment est converti en JSON) ?

    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
    18
    19
     var tmpIds = [];
     
            $(".list-group-item").each(function(pIndex){
                tmpIds [pIndex] = $(this).attr('id');
            });
     
    $.ajax({
                url: '@Url.Action("LoadItemsById", "MonController")',
                type: 'GET',
                dataType: 'json',
                cache: false,
                data: { IdList: tmpIds },
                success: function (result){
     
                },
                error: function (result) {
     
                }
            });
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    [HttpGet]
    public ActionResult LoadItemsById(List<int> IdList)
    {
        if(IdList== null)
       {
            return Json(null, JsonRequestBehavior.AllowGet);
        }
    ...
    J'ai essay� avec une List<int> et un int[], les deux ont le m�me comportement
    Et j'ai v�rifi�, mon tableau contient bien des valeur dans mon JS

    Cordialement,
    TL

  2. #2
    Membre tr�s actif
    Homme Profil pro
    D�veloppeur .NET
    Inscrit en
    F�vrier 2007
    Messages
    871
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : Canada

    Informations professionnelles :
    Activit� : D�veloppeur .NET

    Informations forums :
    Inscription : F�vrier 2007
    Messages : 871
    Par d�faut
    Salut,

    le data encode en json n'est pas nativement interprete par le value provider de mvc, il faut donc le faire sois-meme: http://stackoverflow.com/questions/5...r-as-parameter
    ou
    http://webcognoscere.com/post/How-to...er-Action.aspx

    Donc en substance il faut recuperer l'object json puis le convertir en json, ou cote json convertir l'objet json puis l'envoyer et l'utiliser normalement coter serveur.

    Enfin, ajouter son propre value provider est possible mais sera globale au projet.

  3. #3
    Membre averti
    Homme Profil pro
    D�veloppeur .NET
    Inscrit en
    Mars 2011
    Messages
    40
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : D�veloppeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2011
    Messages : 40
    Par d�faut ASP.Net MVC - JQuery Ajax call avec tableau JSON en param�tre
    Salut Mermich,

    Merci pour ta solution.

    Entre temps, j'ai trouv� une autre solution, qui fonctionne �galement. Mais peut-�tre qu'elle est moins propre. Qu'en penses-tu ?

    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
    18
    19
    var tmpIds = [];
     
            $(".list-group-item").each(function(pIndex){
                tmpIds [pIndex] = $(this).attr('id');
            });
     
    $.ajax({
                url: '@Url.Action("LoadItemsById", "MonController")',
                type: 'GET',
                dataType: 'json',
                cache: false,
                data: { IdList: JSON.stringify(tmpIds) },
                success: function (result){
     
                },
                error: function (result) {
     
                }
            });
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    [HttpGet]
    public ActionResult LoadItemsById(string IdList)
            {
                DataContext.Configuration.LazyLoadingEnabled = true;
     
                if(string.IsNullOrEmpty(IdList))
                {
                    return Json(null, JsonRequestBehavior.AllowGet);
                }
     
                JavaScriptSerializer js = new JavaScriptSerializer();
                int[] Ids = js.Deserialize<int[]>(IdList);
    ...

  4. #4
    Membre tr�s actif
    Homme Profil pro
    D�veloppeur .NET
    Inscrit en
    F�vrier 2007
    Messages
    871
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : Canada

    Informations professionnelles :
    Activit� : D�veloppeur .NET

    Informations forums :
    Inscription : F�vrier 2007
    Messages : 871
    Par d�faut
    Bah tu fais la seconde solution: tu convertis le json en string cote client, puis parse celui-ci cote serveur.

    Pour la conversion, vu que ce n'est qu'une liste d'int, sans-doute separee par des ',' tu aurais put avoir la methode suivante dans ton controlleur:


    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    public ActionResult LoadItemsById(string IdList)
            {
                var list = IdList.Split(',').Select(s => int.Parse(s));
                ...
            }
    Ce que j'en pense, je n'en sais pas, cela depend du projet, du contexte, de l'equipe etc.

  5. #5
    Membre averti
    Homme Profil pro
    D�veloppeur .NET
    Inscrit en
    Mars 2011
    Messages
    40
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : D�veloppeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2011
    Messages : 40
    Par d�faut ASP.Net MVC - JQuery Ajax call avec tableau JSON en param�tre
    Merci beaucoup, je vais valider cette r�ponse qui fonctionne � merveille

    A+
    TL

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. [D�butant] ASP.NET MVC Razor - tri multiple avec Kendo
    Par Faboogy dans le forum ASP.NET MVC
    R�ponses: 0
    Dernier message: 19/08/2015, 15h28
  2. asp.net mvc MVCContrib Grid avec jquery.datatable
    Par mourbare dans le forum ASP.NET MVC
    R�ponses: 0
    Dernier message: 25/10/2011, 13h08
  3. R�ponses: 8
    Dernier message: 15/09/2010, 08h52
  4. R�ponses: 2
    Dernier message: 21/09/2009, 16h10
  5. R�ponses: 6
    Dernier message: 25/11/2008, 11h02

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