1

Ich habe folgende Aktion in meinem MVC-Controller:Angular get Daten von MVC JsonResult

[HttpPost] 
public JsonResult Save(TestModel model) 
{ 
    var newId = _myService.CreateItem(model); 
    return Json(newId); 
} 

Dies läuft und gibt eine ID, ich sehe es in Fiddler zum Beispiel als 42. Jedoch meinen Winkel Code Rückkehr es doesn Erhalte die Nummer nicht, aber der zurückgegebene Wert wird als Daten angezeigt: b, die ein Versprechen enthält. Gibt es eine Möglichkeit, die Zahl in den Daten der Erfolgsmethode zurückzugeben? Mein Winkel Code ist unten:

vm.save = function() { 
TestRepository.save(vm.MyData).$promise.then(
    function (data) { 
     // Here data is returned as data : b, not the number 
    }, 
    function() { 
     alert('An error occurred while creating this record.'); 
    }); 
} 

mein Service ist

function TestRepository($resource) { 
return { 
    save: function (item) { 
     return $resource('/mysite/setup/Save').save(item); 
    } 
} 

Der Service in der Lage ist, die Aktion zu nennen, wie ich den Code zu sehen traf meine Stützpunkte, ich newid sehen kann auch auf 42 gesetzt, aber ich sehe es nie wieder in der eckigen Seite. in gut geformten Objekt

+0

Können Sie nach dem Ergebnis von 'console.log (Daten);' – Hackerman

+0

@Hackerman, die b druckt {$ Versprechen: d, $ aufgelöst: true} Wenn ich ein Objekt zurückgebe und nicht nur die Nummer, die es bearbeitet, enthalten die Daten das Objekt, vielleicht wird die Nummer nicht als JSON zurückgesendet, da Fiddler zeigt, dass die Antwort nur 42 ist, nicht im JSON-Format. – Paritosh

Antwort

3

$resource doesn't support primitive response

Als $resource allgemein mit RESTFUL Dienst zu verbinden, gehen Daten senden, das ist, wie alle API tut. Das Senden von Daten aus der API in einem primitiven Typ rät Leuten davon ab, schlechte Muster zu verwenden. Im Idealfall sollte es nur JSON Objekt zurückgeben.

[HttpPost] 
public JsonResult Save(TestModel model) 
{ 
    var newId = _myService.CreateItem(model); 
    return Json(new {Id = newId}); 
} 

-Code

vm.save = function() { 
    TestRepository.save(vm.MyData).$promise.then(
     function (data) { 
      console.log(data.Id) 
     }, 
     function() { 
      alert('An error occurred while creating this record.'); 
     } 
    ); 
}