POSTing объект из AngularJS в .net WebAPI всегда нулевой - PullRequest
0 голосов
/ 17 ноября 2018

Я пробовал все еще, но при отладке значения в действии web api post всегда null. я попытался изменить заголовки, я добавил [JsonObject (MemberSerialization.OptOut)] выше класса опубликованной модели, я попробовал простое Dto. ничего не работает ... это функция контроллера, которая передает пользовательские данные:

$scope.Add = function () {
        var user = {
            ID: $scope.ID,
            FirstName: $scope.FirstName,
            LastName: $scope.LastName,
            Age: $scope.Age,
            Address: $scope.Address
        };
        $scope.usersRepo.push(user);
        myService.addUser(user);

сервисная функция:

var addUser = function (user) {
        return $http.post(
            usersApi + '/addNewUser',
            JSON.stringify(user)),
            {
                headers: {
                    'Content-Type': 'application/json'
                }
            };
    };

и действие веб-API:

[HttpPost, ActionName("addUser")]
    public void Post([FromBody]UserModel value)
    {
        UsersDB.Add(value);
    }

моя модель такая:

[JsonObject(MemberSerialization.OptOut)]
public class UserModel
{
    public UserModel()
    {

    }
    public UserModel(string firstName, string lastName, int age, string address)
    {
        this.Address = address;
        this.Age = age;
        this.FirstName = firstName;
        this.LastName = lastName;
    }

    public void ConvertDto(UserDto userDto)
    {
        ID = userDto.ID;
        FirstName = userDto.FirstName;
        LastName = userDto.LastName;
        Age = userDto.Age;
        Address = userDto.Address;
    }

    public int ID { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public int Age { get; set; }
    public string Address { get; set; }
    }

1 Ответ

0 голосов
/ 17 ноября 2018

Используйте метод http post следующим образом.данные должны быть вашим объектом для передачи без json stringify.Я посоветовал вам создать сервис для методов http.

 var obj = {
        url: your url,
        async: true,
        method: 'POST',
        headers: {
            "content-type": "application/json; charset=utf-8",
        }
    };
    if (typeof data != 'undefined' && typeof data != null) {
        obj.data = data;
    }
    $http(obj).then(function() {}, function() {});

Сервис: // методы http

app.service('MethodProvider', ['$http', function ($http) {
    var self = this;
    self.get = function (url, data) {
        var obj = {
            url: url,
            async: true,
            method: 'GET',
            headers: {
                'Content-Type': 'application/json'
            }
        };
        if (typeof data != 'undefined' && data != null) {
            obj.params = data;
        }
        return $http(obj);
    };
    self.post = function (url, data) {
        var obj = {
            url: url,
            async: true,
            method: 'POST',
            headers: {
                "content-type": "application/json; charset=utf-8",
            }
        };
        if (typeof data != 'undefined' && typeof data != null) {
            obj.data = data;
        }
        return $http(obj);
    };
     self.put = function (url, data) {
        var obj = {
            url: url,
            async: true,
            method: 'PUT',
            headers: {
                'Content-Type': 'application/json'
            }
        };
        if (typeof data != 'undefined' && data != null) {
            obj.data = JSON.stringify(data);
        }
        return $http(obj);
    };
    self.delete = function (url) {
        var obj = {
            url: url,
            async: true,
            method: 'DELETE',
            headers: {
                'Content-Type': 'application/json'
            }
        };
        if (typeof data != 'undefined' && data != null) {
            obj.data = JSON.stringify(data);
        }
        return $http(obj);
    };
}]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...