2016-12-21 47 views
0

我被困在從角度$ http post方法調用C#web API的方法如下。

我的JSON對象是如下面角

var requestParams = { 
    "CostObjects": $scope.costObjForSaveArray, 
    "CostObjectHierarchies": $scope.costObjHierarchyForSaveArray, 
}; 

API調用如下

$http({ 
    method: "POST", 
    url: API_ROOT + "BusinessDimension/UpdateCostObjects", 
    data: requestParams, 
    headers: { 
     "Content-Type": "application/json" 
    } 
}) 

現在.NET編寫的API如下所示。

[HttpPost, ActionName("UpdateCostObjects")] 
public HttpResponseMessage UpdateCostObjects([FromBody] JsonData data) 
{ 
    var costObjects = JsonConvert.DeserializeObject<List<CostObjectM>>(data.Data); 

    if (ModelState.IsValid) 
    { 
     var updatedCostObjects = Acornpadomainservice.UpdateCostObjects(costObjects).ToList(); 
     return Request.CreateResponse(updatedCostObjects); 
    } 
    else 
    { 
     return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState); 
    } 
} 

JSON類是如下

public class JsonData 
{ 
    public string Data { get; set; } 
} 

任何人都可以糾正我什麼我做錯了嗎?

+0

你的函數被調用,但數據爲空? – gaurav5430

+0

是@ gaurav5430:但是數據顯示在請求有效載荷中chrome xhr網絡 –

回答

0

編輯以下代碼

$http({ 
 
    method: "POST", 
 
    url: API_ROOT + "BusinessDimension/UpdateCostObjects", 
 
    data: {Data :angular.toJson(requestParams)}, 
 
    headers: { 
 
     "Content-Type": "application/json" 
 
    } 
 
})

的angular.toJson(數據)將stringfy你對象,因爲JSON對象是在數據期待一個字符串類型字段被髮送到它

0

更換JsonData你的POST方法的參數類型對象在更換和檢查,如果它的工作或不..

EG。

[HttpPost, ActionName("UpdateCostObjects")] 
    public HttpResponseMessage UpdateCostObjects([FromBody] object data) 
    { 
     var costObjects = JsonConvert.DeserializeObject<List<CostObjectM>>(data.Data); 

     if (ModelState.IsValid) 
     { 
      var updatedCostObjects = Acornpadomainservice.UpdateCostObjects(costObjects).ToList(); 
      return Request.CreateResponse(updatedCostObjects); 
     } 
     else 
     { 
      return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState); 
     } 
    } 
0
$http({ 
    method: "POST", 
    url: API_ROOT + "BusinessDimension/UpdateCostObjects", 
    data: JSON.stringify(requestParams), 
    contentType: 'application/json; charset=utf-8' 
}) 
+0

我請求您請在您共享的代碼周圍添加一些上下文/評論。它會幫助提問者和其他讀者更好地理解你的帖子。 – RBT

+0

@RBT問這個問題沒有驗證任何答案或回覆我們任何人.. !!!! –