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

寵の児 提交于 2019-12-10 04:10:17

问题


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?


回答1:


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.




回答2:


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

Add a [FromBody] attribute:

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


来源:https://stackoverflow.com/questions/27465390/pass-data-http-post-from-angularjs-and-asp-net-mvc-gets-null

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!