2016-04-21 7 views
0

Ich frage mich eine lange Zeit und ich kann keine Lösung finden, vielleicht jemand von Ihnen gelöst ein ähnliches Problem.

Nehmen wir an, wir wollen Array von Objekten über $ http Service an den MVC-Controller übergeben. Dieses Array ist in eckigen erstellt, so dass ich nicht den richtigen Typ (nur var) kennen. Das Problem ist, ich weiß nicht, welche Art von Parametern in MVC Funktion

AngularJS-Controller

$scope.DoSth = function(){ 
    var data = [{ 
     Id: "1", 
     Value: "apple" 
    }, 
    { 
     Id: "2", 
     Value: "banana" 
    }]; 
}; 

//DoSthService injected into angular controller 

DoSthService.doSth(data) 
    .success(function(result){ 
     //sth with success result 
    }) 
    .error(function(result){ 
     //sth with error result 
    }); 

AngularJS Dienst sein soll:

this.doSth = function(data){ 
    var response = $http({ 
     method: "post", 
     url: "Home/DoSth", 
     data: data 
     //or data: JSON.stringify(data) ?? 
     }); 
    return response; 
}; 

MVC Controller:

public string DoSth(**what type here?** data) 
{ 
    //do sth and return string 
} 

Könnte a Könntest du mir helfen?

+0

Sie brauchen etwas wie Jackson, um JSON zu einem Pojo zu kartieren. – skubski

Antwort

1

Erstellen Sie eine Klasse

public class MyClass 
{ 
    public int Id { get; set;} 
    public string Value { get; set;} 
} 

die Liste in Ihrer Methode verwenden

public string DoSth(List<MyClass> data) 
{ 
    //access your data 
    //data[0].Id,data[0].Value or by any other way 
} 

Keine Notwendigkeit zu ändern alle Ihre js code

+0

Yeee! Es funktioniert! Vielen Dank! –

+0

Kein Problem. Glückliche Kodierung! –

0
You have to put model here. 

public string DoSth(FruitModel data) 
{ 
    //do sth and return string 
} 
+0

Danke für die Antwort, Karthik MR Antwort war genauer –

0

Wenn ich mich nicht irre Sie dies mit einem String tun kann (wenn JSON gesendet wird)

public string DoSth(string data) 
{ 
    //do sth and return string 
} 

Vergessen Sie nicht, diesen Header in Ihrer AJAX-Anforderung hinzu:

headers: { 
    'Content-Type': 'application/json' 
} 

auch stringify es, wie:

data: JSON.stringify(data) 

Wenn du es getan hast Recht sollte AJAX-Request wie folgt aussehen:

this.doSth = function(data){ 
    var response = $http({ 
      method: 'post', 
      url: 'Home/DoSth', 
      headers: { 
       'Content-Type': 'application/json' 
      }, 
      data: JSON.stringify(data) 
     }); 
    return response; 
}; 
+0

Danke für die Antwort, ich habe es überprüft, aber ich erhielt immer noch Null-Objekt, weiß nicht warum. –

Verwandte Themen