web-dev-qa-db-ja.com

AngularJSおよびASP.netMVCからデータ$ http.postを渡すとnullになります

angularJSからASP.netMVCにデータを渡そうとしていますが、常に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)で、私はこれを取得しています:

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

私は何を間違っているのですか?

7
Luis

オブジェクトを文字列化するのではなく、オブジェクトとして直接渡します。現在渡されているため、これは文字列であり、適切に逆シリアル化できるオブジェクトではありません。

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

ペイロードに一致するCarオブジェクトを作成します。シリアライザーがJSONオブジェクトを処理します。

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

私の仮定では、ある時点で、文字列をオブジェクトに逆シリアル化しています。これにより、余分な手順を省くことができます。

8
David L

JSON.stringifyを削除します。オブジェクトはすでにJSONです。

[FromBody]属性を追加します。

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