2017-08-17 1 views
0

I ont la classe avec la structure suivantePasse classe Type de paramètre via ajax jquery

public class MyType 
    { 
     [Key] 
     [Required] 
     public string name { get; set; } 
     [Key] 
     [Required] 
     public string type{ get; set; } 

    } 


Public Class A 
{ 
string Id{get;set;} 
public List<MyType> aList{get;set;} 
} 

Mon ajax calling suit:

var listitem=[ 
{name:"a",type:1}, 
{name:"b",type:2}, 
{name:"c",type:3} 
] 

    $.ajax({ 
       url: '@Url.Action("ActionMethod", "Controller")', 
       type: 'post', 
       async: false, 
       data: { 
        Id: 1,      
        aList :listitem 

       }, 
       success: function (resp) { 

       }, 
       error: function (resp) { 
       } 
      }); 

Mon action Méthode suit:

[HttpPost] 
      public ActionResult ActionMethod(A adata) 
      { 
       return some action; 

      } 

I je reçois la valeur de Id dans ActionMethod mais l'élément de liste est vide? comment puis-je passer la liste?

+0

il devrait y avoir un '' sync' dans datatype' sur votre '' Client' et server', s'il vous plaît partager votre classe 'MyType' ainsi – manish

+0

@manish MyType ajouté – MAT14

+1

Je pense que le problème est: Vos données (aList) sont une liste mais votre méthode d'action prend un seul objet. – himyata

Répondre

3

Essayez comme ceci:

var adata = { 
    Id: 1, 
    aList: [ 
     { name: "a", type: 1 }, 
     { name: "b", type: 2 }, 
     { name: "c", type: 3 } 
    ] 
} 

$.ajax({ 
    url: '@Url.Action("ActionMethod", "Controller")', 
    type: 'post', 
    data: JSON.stringify(adata), 
    contentType: "application/json; charset=utf-8", 
    success: function (resp) { 

    }, 
    error: function (resp) { 
    } 
}); 
+3

Vous devez également définir' contentType: 'application/json'' (et ne jamais utiliser 'async: false') –

+0

@StephenMuecke Merci. J'ai modifié le code – himyata

+0

J'ai oublié d'ajouter le type de contenu merci – MAT14