$ http post将值传递给Asp.Net Web API

时间:2018-03-26 11:44:45

标签: c# angularjs asp.net-web-api

我有一个带有一个post方法的ASP.Net Web API。我从角度js调用post方法。它没有将数据传递给API POST方法,我的requestData对象的所有属性都是null。我不确定这里的错误是什么。任何人都可以帮助我。

API代码

public void Post(RequestData data)
{
.....
}

public class RequestData
{
    PropertyDetail propertyDetails;
    ICollection<Model1> model1s;
    ICollection<Model2> model2s;
    ICollection<Model3> model3;
    ICollection<Model4> model4;
}

客户代码

var requesData = new RequestData();
requesData.model0= $scope.model0;
requesData.model1s= $scope.models;
requesData.model2s= $scope.model2s;
requesData.model3s= $scope.model3s;
requesData.model4s= $scope.model4s;

        $http({
            method: 'POST',
            url: window.apiUrl,
            headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
            data: requesData,
        }).then(function (res) {
            console.log('succes !', res.data);
            window.alert("Successfully created");
        }).catch(function (err) {
            debugger;
            console.log('error...', err);
        });

3 个答案:

答案 0 :(得分:1)

可能您的服务器端无法正确映射您的参数。发布一些参数时,数据类型匹配很重要。您可以像这样更改客户端代码:

...
        contentType: "application/json; charset=utf-8",
        data: JSON.stringify(requestData),
        dataType:'json',
...

答案 1 :(得分:0)

在执行@ Jaky71之后,您可以通过调用带有空值的虚拟方法或模拟的任何内容来了解​​.net是如何期望这些对象的。

.net有一个严格的解析器

答案 2 :(得分:0)

您可以使用angular.toJson:

$http({
        method: 'POST',
        url: window.apiUrl,
        headers: { 'Content-Type': 'application/json' },
        data: angular.toJson(requesData),
    }).then(function (res) {
        console.log('succes !', res.data);
        window.alert("Successfully created");
    }).catch(function (err) {
        debugger;
        console.log('error...', err);
    });  

还要确保您的属性匹配。