Размещать JSON-объект в C # ASP.NET WEB API - PullRequest
0 голосов
/ 25 июня 2018

Я не могу опубликовать объект JSON в теле моего HTTP-сообщения.

Я даже пробовал это

$httpProvider.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=utf-8';

но все равно не сработало

Вот мой код:

<!DOCTYPE html>
<html lang="en">
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.9/angular.min.js"></script>
<body>

<div ng-app="myApp" ng-controller="formCtrl">
  <form novalidate>
    type:<br>
    <input type="number" ng-model="config.type"><br>
    Id:<br>
    <input type="text" ng-model="config.Id">
    <br><br>
    <button ng-click="submit()">Submit</button>
  </form>
</div>

<script>
var app = angular.module('myApp', []);
app.controller('formCtrl', function($scope,$http) {
    $scope.config = {type:0, Id:"786"};
    $scope.submit = function() {
        var data = $scope.config;
        //$http.post("http://localhost:8612/api/values/", data);
        var xhttp = new XMLHttpRequest();
        xhttp.open("POST", "http://localhost:8612/api/values/", true);
        xhttp.setRequestHeader("Content-type", "application/json");
        xhttp.send(JSON.stringify(data));
        alert("Done");
    };
});
</script>

</body>
</html>

Я получаю сообщение об ошибке: мой объект пуст в этом методе

// POST api/values
[HttpPost]
public IActionResult Post([FromBody]object c)

1 Ответ

0 голосов
/ 25 июня 2018

Так что десериализация не удалась, вероятно. неправильная модель запроса типа object; вместо этого вы должны определить правильную модель запроса и использовать ее, например,

public class ApiRequestModel 
{
   // define all your required properties client going to send
}

[HttpPost]
public IActionResult Post([FromBody] ApiRequestModel c)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...