Публикация объектов из массива в API .NET core 2 из Angular 7 - PullRequest
1 голос
/ 26 марта 2019

Я пытался отправить данные из массива в .net core 2 API. у пользователя есть сетка с флажками, и при каждой проверке она добавляет строку в массив. Однако, когда я пытаюсь опубликовать данные, они становятся нулевыми на серверной части. В прошлом я успешно писал сообщения в API, используя реактивные формы, но тогда, когда это был только один набор значений, заполненных пользователем, мне нужно было отправлять предварительно заполненные объекты данных без форм.

.NET API Controller:

[HttpPost("api/updateBillingRecords")]
        public async Task<ActionResult<BillingModel[]>> UpdateBillingRecords([FromBody] BillingModel updatedBillingRecords)
        {
            var incomingRecords =  await kiraBillingService.UpdateBillingRecordsAsync(updatedBillingRecords);
            return Ok("RECORDS UPDATED");
        }

Угловой компонент:

 doNotBill(i) {
  var index = this.doNotBillRecords.indexOf(i);

  if (index === -1) {

    this.doNotBillRecords.push(i);
  } else {

    this.doNotBillRecords.splice(index, 1);
  }


  // test if records are being added and removed accordingly
  console.log(`Dynamic Data: ${this.doNotBillRecords.values}`);

}

Отправка заполненного массива в API:

updateBilling() {
    this.billingService.updateBillingRecords(this.doNotBillRecords).subscribe();
  }

Угловая служба:

updateBillingRecords(billingRecord): Observable<BillingRecord[]> {
    const headers = new HttpHeaders({ 'Content-Type': 'application/json' });
    return this.http.post<BillingRecord[]>(this.updateBillingRecordsAPIUrl, billingRecord, { headers: headers });
  }

Ответы [ 2 ]

1 голос
/ 26 марта 2019

Можете ли вы использовать разбор JSON?

Angular

updateBillingRecords(billingRecord): Observable<BillingRecord[]> {
       const headers = new HttpHeaders({ 'Content-Type': 'application/json' });
       return this.http.post<BillingRecord[]>(this.updateBillingRecordsAPIUrl, JSON.stringify(billingRecord), { headers: headers });
}

И вы используете библиотеку Newtonsoft JSON для получения массива

BillingMode[] updated = Newtonsoft.Json.JsonConvert.DeserializeObject<List<BillingMode[]>("your body").ToArray();
1 голос
/ 26 марта 2019

Вы должны изменить параметр сервера так, чтобы он принимал массив при отправке массива из angular.пожалуйста, попробуйте изменить параметр, принятый для

 public async Task<ActionResult<BillingModel[]>> UpdateBillingRecords([FromBody] BillingModel[] updatedBillingRecords)
...