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

Angular表单提交POST请求返回400:无法将null转换为System.Int32类型

问题根因

0: "Error converting value {null} to type 'System.Int32'. Path 'sideId'"
该错误由后端参数反序列化失败触发:后端接收模型中sideId字段被定义为不可为空的System.Int32类型,无法解析你前端传入的null值,因此返回400 Bad Request。

解决方案

你可以结合业务规则选择对应处理方案:

方案1:业务允许sideId为空

  • 优先修改后端模型定义,将sideId的类型从int调整为可空值类型int?(C# 语法),调整后后端即可正常接收null值:
// 调整前代码
public int sideId { get; set; }
// 调整后代码
public int? sideId { get; set; }
  • 若后端暂时无法调整,前端可在提交前做参数兼容:如果业务中不存在sideId = 0的有效场景,可把null替换为0传给后端,同时同步后端做好0值的业务兼容。

方案2:业务要求sideId不可为空

  • 前端增加表单校验规则,提交前判断sideId是否为空,为空时直接阻断提交,给用户提示请选择对应的sideId,避免无效请求发出。
  • 提交前做参数预处理,给sideId赋值合法的默认Int32值,或者删除值为null的sideId字段(需确认后端允许缺省该字段),Angular 预处理示例代码:
const rawFormValue = this.deviceForm.value;
const submitPayload = {
  ...rawFormValue,
  // 方式1:值为null/undefined时删除该字段
  sideId: rawFormValue.sideId ?? undefined
  // 方式2:赋值默认有效值,根据业务替换即可
  // sideId: rawFormValue.sideId ?? 1
}
// 携带处理后的payload发起POST请求
this.http.post<DeviceDetail>(yourApiUrl, submitPayload).subscribe()

内容的提问来源于stack exchange,提问作者Allison.A

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 07:57:04