7

Tôi đang cố chuyển dữ liệu từ AngularJS sang ASP.net MVC và luôn nhận được giá trị rỗng. Dưới đây là mã của tôi (chỉ đăng thiết yếu, nút, điều khiển và C#:

HTML:

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

khiển

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

C#

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

Trong JSON.stringify ($ scope.new.JsonCar) Tôi nhận được thông tin này:

"{" Tên ":" FIAT 500" , "Mô tả": "New xe", "MaxUserCapacity": 5, "PhotoPath": "none"}"

gì i' m làm sai?

Trả lời

8

Vượt qua đối tượng của bạn trực tiếp như một đối tượng chứ không phải là stringifying nó. Vì nó đang được truyền ngay bây giờ, nó là một chuỗi, không phải là một đối tượng có thể được deserialized đúng cách.

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

Tạo đối tượng ô tô khớp với trọng tải của bạn. Trình nối tiếp sẽ xử lý đối tượng JSON của bạn cho bạn.

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

Giả định của tôi là tại một số thời điểm bạn đang deserializing chuỗi của bạn thành một đối tượng bất kể. Điều này chỉ giúp bạn tiết kiệm thêm một bước.

+0

yah, đúng vậy. Cảm ơn rất nhiều :) – Luis

+0

Hoàn hảo! Chúc mừng tôi có thể giúp. –

+0

nó hoạt động, bởi vì bây giờ nó đặt 'contentType:" application/json "' – VahidN

3

Xóa JSON.stringify, đối tượng của bạn đã là JSON.

Thêm một [FromBody] thuộc tính:

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

Thuộc tính [FromBody] yêu cầu MVC nhận giá trị của đối tượng từ phần thân của yêu cầu HTTP. –

Các vấn đề liên quan