我有一个带有一个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);
});
答案 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);
});
还要确保您的属性匹配。