2017-04-05 34 views
0

我想創建一個接受複雜類型的webApi方法,此方法可通過AngularJs $ http.post()調用,但接收到的值始終爲null。嘗試幾乎所有可能的建議在互聯網上,似乎沒有任何工作!我的代碼片段如下。從Angular調用webapi,但參數總是收到null

var config = { 
     method: "POST", 
     url: URLService.myBaseURL() + 'api/RequestApi/createNewRequest', 
     headers: { 
      "Content-Type": "application/json" 
     }, 
     data: $scope.dataToSubmit 
    } 

    $http(config) 
    .then(function (success) { 
     alert('A New request Created Successfully!!') 
    }, function (error) { 
     alert('There was an error while creating the request!!') 
    }) 

C#代碼的WebAPI

public class RequestApiController : ApiController 
{ 
    [HttpPost] 
    public string createNewRequest([FromBody]Request dataSubmitted) 
    { 
     //BL here... 
    } 
} 

public class Request { 
    List<Activities> clearanceReqDetails { get; set; } 
    ..... 
} 
public class Activities{ 
    .... 
} 

任何幫助!

+2

$ scope.dataToSubmit是什麼樣子的?與其餘的C#類一起。 – brad

+0

$ scope.dataToSubmit,是用戶單擊Submit按鈕時從所有ng模型填充的json。我已經在http://jsonlint.com驗證了這個json。這個JSON被發現是有效的。 [{ \t \t 「ID」:1, \t \t 「VesselId」:下面 { \t 「clearanceReqDetails」 樣品JSON 1, \t \t 「VesselName」: 「HAI龔YOU 9」, \t \t .. .. \t}], \t 「開始日期」: 「05-APR-2017」, \t 「結束日期」: 「05-APR-2017」, \t 「請求」: 「用戶」, \t 「團隊」 :「租船人清潔」, \t .... } – Pawan

+0

@Pawan - 您是否驗證了您要提交的json與Request對象的結構相匹配?你能否成功地從瀏覽器調用API? – jbrown

回答

0

問題已解決!這是類屬性的訪問說明符的問題,因爲序列化/反序列化不僅發生在類中,而且類屬性也需要具有適當的訪問說明符。 在我的情況下,我通過在兩個類的屬性中添加'public'訪問說明符來解決該問題,如下所示。

public class Request { 
    **public** List<Activities> clearanceReqDetails { get; set; } 
... 
} 
public class Activities{ 
    **public** ... 
}