7

ich versuche, Daten von AngularJS zu ASP.net MVC zu übergeben und wird immer Null. Hier ist mein Code (nur die wesentliche, Button, Regler und C# Posting:

HTML:

<a class="btn btn-grey btn-lg btn-block" ng-click="AddCar()">Save</a> 

-Controller

$scope.AddCar = function() { 
      $http.post("Cars/AddCar", JSON.stringify($scope.new.JsonCar)).success(function (data) { 
       Alert(ok) 
      }) 

C#

public string AddCar(string JsonCar) 
     { 
      try 
      .... 
     } 

In JSON.stringify ($ scope.new.JsonCar) Ich bekomme das:

"{" Name ":" FIAT 500" , "Beschreibung": "Neues Auto", "MaxUserCapacity": 5, "PhotoPath": "none"}“

Was i‘ m falsch machen?

Antwort

8

Fahren Sie mit Objekt direkt als Objekt, anstatt es stringifying. Da es gerade übergeben wird, handelt es sich um eine Zeichenfolge und nicht um ein Objekt, das ordnungsgemäß deserialisiert werden kann.

$http.post("Cars/AddCar", $scope.new.JsonCar).success(function (data) { 
      Alert(ok) 
     }) 

Erstellen Sie ein Auto-Objekt, das Ihrer Nutzlast entspricht. Der Serializer behandelt Ihr JSON-Objekt für Sie.

public Car AddCar(Car car) 
    { 
     try 
     .... 
    } 

Meine Annahme ist, dass Sie irgendwann Ihre Zeichenfolge in ein Objekt deserialisieren. Dies erspart Ihnen nur diesen zusätzlichen Schritt.

+0

yah, das ist es. Vielen Dank :) – Luis

+0

Perfekt! Glücklich, ich könnte helfen. –

+0

es funktioniert, weil es jetzt die 'contentType:" application/json "' – VahidN

3

Entfernen Sie die JSON.Stringify, Ihr Objekt ist bereits JSON.

a [FromBody] Attribut hinzufügen:

public string AddCar([FromBody]string JsonCar) 
    { 
     try 
     .... 
    } 
+0

Das [FromBody] -Attribut weist MVC an, den Wert des Objekts aus dem Hauptteil der HTTP-Anforderung abzurufen. –

Verwandte Themen