2016-12-21 1 views
0

Я застрял в вызове C# web API из углового метода почтового метода $ http, как показано ниже.

Мой 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" 
    } 
}) 

Теперь API написан на .NET, как показано ниже.

[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: Но данные отображаются в запросе полезной нагрузки в хром-сети 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 и проверить, если он работает или нет ..

Ев.

[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, который задал вопрос, не подтвердил никакого ответа или ответа никому из нас .. !!!! –

Смежные вопросы