2014-10-21 6 views
7

Non è stato possibile ottenere i parametri dell'array JSON nel metodo del controller web api (SaveDetails).
Ecco il mio codice.Passare l'array JSON da Javascript al metodo del controller API Web

codice JavaScript:

 $.ajax(
    { 
     url : "api/Test/SaveDetails", 
     type : "POST", 
     data : { 
        "employees": 
        [ 
         { "firstName": "John", "lastName": "Doe" }, 
         { "firstName": "Anna", "lastName": "Smith" }, 
         { "firstName": "Peter", "lastName": "Jones" } 
        ] 
       }, 
     success: function (data) {alert("success");}, 
     error: function() {alert("Error");} 
    }) 

metodo controller

[HttpPost] 
public DataSet SaveDetails(Models.Person[] obj) 
{ 
    //save opertion.  
} 

metodo del modello:

public class Person 
{ 
    public string firstName { get; set; } 
    public string lastName { get; set; } 
} 

Che re le modifiche da apportare per ottenere i parametri dell'array JSON nel metodo web API.

+0

Hai provare a inviare i dati come JSON (vedi http://stackoverflow.com/questions/5570747/jquery -posting-jSON)? Quindi nel tuo controller puoi recuperare questi dati dal corpo della richiesta usando l'attributo '[FromBody]'. –

risposta

7

provare il seguente codice:

dichiarare il metodo modello come segue:

public class Models.employees 
{ 
    public string firstName { get; set; } 
    public string lastName { get; set; } 
} 

public class Models.RootObject 
{ 
    public List<employees> employees { get; set; } 
} 

Controller:

[HttpPost] 
public DataSet SaveDetails([FromBody]RootObject Person) 
{ 
    //save opertion.  
} 

Qui arriva l'atteso Risultato: Output

+1

Grazie mille! Funziona .. –

+1

Questo ha funzionato per me, grazie !! – josher932

+0

Nota importante: la classe del modello deve avere un costruttore predefinito + setter pubblici, altrimenti non funzionerà. –

1

provare in questo modo:

$.ajax(
    { 
     url : "api/Test/SaveDetails", 
     type : "POST", 
     contentType : 'application/json', 
     data : { 
        "obj": 
        [ 
         { "firstName": "John", "lastName": "Doe" }, 
         { "firstName": "Anna", "lastName": "Smith" }, 
         { "firstName": "Peter", "lastName": "Jones" } 
        ] 
       }, 
     success: function (data) {alert("success");}, 
     error: function() {alert("Error");} 
    }) 

Controller:

[HttpPost] 
public DataSet SaveDetails([FromBody]Models.Person[] obj) 
{ 
    //save opertion.  
} 
Problemi correlati