繁体   English   中英

$ http发布将值传递为null的Asp.Net Web API

[英]$http post passing value as null to Asp.Net Web API

我有一个发布方法的ASP.Net Web API。 我从angular 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);
        });

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

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

按照@ Jaky71的说明进行操作之后,您可以通过调用带有null或您需要模仿的东西的伪方法来了解.net如何期望这些对象。

.net有严格的解析器

您可以使用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);
    });  

还要确保您的属性匹配。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM