2017-03-03 53 views
2

我正在angularJS应用程序中,我正在进行post调用以发送数据到API控制器,除了数据数组之外,所有事情都发送到控制器。阵列数据没有被发送到API控制器c#

这里是代码,以使控制器的呼叫

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属性的空列表。

+1

您是否尝试过[FormBody] JobDataWithDeadlines JobData –

+2

注意:对'Jobnum'使用'double';)。 –

+0

我认为你的JSON在StatusDatas部分不正确 –

回答

1

问题是你的领域,他们都需要属性代替。 json.net的反序列化和序列化不会绑定到字段(无论如何,它可能与其他配置/自定义映射代码)。

public class JobDataWithDeadlines 
{ 
    public int? jobNum {get;set;} 
    public string jobName {get;set;} 
    /* snip */ 
    public List<StatusData> StatusDatas {get;set;} 
} 

public class StatusData 
{ 
    public int scId {get;set;} 
    public double JobNum {get;set;} 
    public string StatusComment {get;set;} 
    public string scTimeStamp {get;set;} 
    public bool IsNew {get;set;} 
} 

此外,您应该在请求的http标头中指定content-type。在这种情况下,将其设置为application/json

1

您有以下属性添加到您传递给$http方法的对象:

this.UpdateJobWithDeadlines = function (JobData) { 
    var request = $http({ 
     method: "POST", 
     contentType: "application/json", 
     dataType: "json", 
     url: "/api/JobAPI/UpdateJobWithDeadlines", 
     data: JSON.stringify(JobData) 
    }); 
    return request; 
} 

您可以选择指定一个字符集的内容类型,即:

contentType: 'application/json; charset=utf-8' 

有人还建议加入traditional: true,但根据我的经验,并不总是导致此问题的原因。

相关问题