2017-03-03 55 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,但根據我的經驗,並不總是導致此問題的原因。

相關問題