Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Pass Data $http.post From AngularJS and ASP.net MVC gets null

i'm trying to pass data from AngularJS to ASP.net MVC and is always getting null. Here's my code (only posting the essential, button, controller and c#:

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) i'm getting this:

"{"Name":"FIAT 500","Description":"New car","MaxUserCapacity":5,"PhotoPath":"none"}"

What i'm doing wrong?

like image 985
Luis Avatar asked Dec 14 '14 01:12

Luis


2 Answers

Pass your object directly as an object rather than stringifying it. As it's being passed right now, it's a string, not an object that can properly be deserialized.

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

Create a Car object that matches your payload. The serializer will handle your JSON object for you.

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

My assumption is that at some point you are deserializing your string into an object regardless. This just saves you that extra step.

like image 51
David L Avatar answered Sep 23 '22 21:09

David L


Remove the JSON.stringify, your object is already JSON.

Add a [FromBody] attribute:

 public string AddCar([FromBody]string JsonCar) 
    {
        try
       ....
    }
like image 28
pixelbits Avatar answered Sep 20 '22 21:09

pixelbits