Join the Stack Overflow Community
Stack Overflow is a community of 6.5 million programmers, just like you, helping each other.
Join them; it only takes a minute:
Sign up

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?

share|improve this question
up vote 7 down vote accepted

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.

share|improve this answer
    
yah, that's it. Thanks a lot :) – Luis Dec 14 '14 at 1:41
    
Perfect! Happy i could help. – David L Dec 14 '14 at 1:48
    
it works, because now it sets the contentType:"application/json" – VahidN May 1 at 9:21

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

Add a [FromBody] attribute:

 public string AddCar([FromBody]string JsonCar) 
    {
        try
       ....
    }
share|improve this answer
    
The [FromBody] attribute tells MVC to get the value of the object from the body of the HTTP request. – Prathap Kudpu Apr 17 at 15:30

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.