【发布时间】:2017-07-23 19:49:00
【问题描述】:
我正在开发 angularJS 应用程序,我在其中进行后期调用以将数据发送到 API 控制器,除了数据数组之外,所有内容都被发送到控制器。
这是调用控制器的代码
this.UpdateJobWithDeadlines = function (JobData) {
var request = $http({
method: "POST",
url: "/api/JobAPI/UpdateJobWithDeadlines",
data: JSON.stringify(JobData)
});
return request;
}
我检查了 JobData 对象,它的值(为了便于阅读而缩进)是:
{
"jobNum":null,
"jobName":"fgfg",
/* snip */
"StatusDatas":[
{
"scId":0,
"JobNum":9746.030148450296,
"StatusComment":"03-03-2017 : 1",
"scTimeStamp":"2017-03-03T15:47:48.174Z",
"IsNew":0
},
{
"scId":0,
"JobNum":8527.946898255957,
"StatusComment":"03-03-2017 : 3",
"scTimeStamp":"2017-03-03T15:47:49.459Z",
"IsNew":0
}
],
/* SNIP */
"telephone":"9"
}
控制器方法签名如下:
public int UpdateJobWithDeadlines(JobDataWithDeadlines JobData)
JobDataWithDeadlines 类如下:
public class JobDataWithDeadlines
{
public int? jobNum;
public string jobName;
/* snip */
public List<StatusData> StatusDatas;
}
public class StatusData
{
public int scId;
public int JobNum;
public string StatusComment;
public string scTimeStamp;
public bool IsNew;
}
但我得到一个空列表,用于控制器方法参数的 StatusDatas 属性。
【问题讨论】:
-
你试过[FormBody] JobDataWithDeadlines JobData
-
旁注:使用
double代替Jobnum;)。 -
我认为您的 json 在 StatusDatas 部分中不正确
-
这是复制/粘贴错误吗?
telephone右侧只有一组引号。 -
最好将你的 api 与客户端分开测试。使用休息控制台或其他 chrome 插件/扩展之一。一旦你知道让你的 API 工作需要什么......那么如果你无法从 JS 调用它,你就会知道这是一个 JS 问题