从 AngularJS 传递数据 $http.post ASP.net MVC 将变为空

本文关键字:MVC net ASP post AngularJS 数据 http | 更新日期: 2023-09-27 18:34:07

我正在尝试将数据从AngularJS传递到MVC ASP.net 并且总是为空。这是我的代码(只发布基本,按钮,控制器和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","描述":"新 car","MaxUserCapacity":5,"PhotoPath":"none"}"

我做错了什么?

从 AngularJS 传递数据 $http.post ASP.net MVC 将变为空

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

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

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

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

我的假设是,在某些时候,无论如何您都会将字符串反序列化为对象。 这只会为您节省额外的步骤。

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

添加一个 [FromBody] 属性:

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