You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET ICollection反序列化失败:Angular请求Payload问题排查

问题描述

我在C#中有一个模型,包含集合属性:

public virtual ICollection<Salary> Salaries { get; set; }

在Angular中,我尝试这样发送数据:

const salary: SalaryModel =  {
          clientId: 1,
          profileId: this.profile.id,
          amount: this.salary.value,
          startDate: new Date(),
          endDate: null,
        }
        this.profileForm.patchValue({ salaries: salary});

其中profileForm的salaries字段定义如下:

this.profileForm = this.fb.group({
salaries: [],
})

当发起API请求时,返回错误:

Cannot deserialize the current JSON object (e.g. {"name":"value"})

Payload内容为单个Salary对象(原截图显示的是一个对象而非数组)。我未发现Payload存在问题,请问有人知道原因吗?

解决方案

问题核心是前后端数据类型不匹配:

  • C#后端的Salaries是ICollection<Salary>集合类型,期望接收的是JSON数组(用[]包裹的对象集合)
  • 你在Angular中给salaries字段赋值的是单个Salary对象,而非数组,后端自然无法把单个对象反序列化为集合类型

直接修正赋值逻辑,把单个对象包装成数组即可:

// 将单个salary放入数组中
this.profileForm.patchValue({ salaries: [salary]});

如果后续需要动态添加多个薪资条目,建议用Angular的FormArray来定义表单字段,更符合集合类型的表单处理规范:

this.profileForm = this.fb.group({
  salaries: this.fb.array([])
})

内容的提问来源于stack exchange,提问作者Jesus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 20:30:43