传递数据$ http.post从AngularJS和ASP.net MVC获取null

时间:2014-12-14 01:18:14

标签: c# asp.net-mvc angularjs angularjs-directive angularjs-controller

我正在尝试将数据从AngularJS传递到ASP.net MVC并且始终为null。 这是我的代码(仅发布基本,按钮,控制器和c#:

HTML:

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

控制器

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

C#

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

在JSON.stringify($ scope.new.JsonCar)中我得到了这个:

  

“{”姓名“:”菲亚特500“,”描述“:”新的   车 “ ”MaxUserCapacity“:5 ”PhotoPath“: ”无“}”

我做错了什么?

2 个答案:

答案 0 :(得分:8)

将对象直接作为对象传递,而不是对其进行字符串化。当它正在传递时,它是一个字符串,而不是可以正确反序列化的对象。

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

创建与您的有效负载匹配的Car对象。序列化程序将为您处理JSON对象。

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

我的假设是,无论如何,您将字符串反序列化为对象。这只会为您节省额外的一步。

答案 1 :(得分:4)

删除JSON.stringify,你的对象已经是JSON。

添加[FromBody]属性:

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