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

ASP.NET Core控制器接收复杂对象异常:仅Id赋值成功求助

解决ASP.NET Core模型绑定中集合未赋值的问题

我一眼就发现了问题的核心——你的GroupInviteVM类里的Guest集合属性是私有的!ASP.NET Core的模型绑定系统只能访问公共(public)成员,私有属性根本无法被框架读取和赋值,这就是为什么只有Id能绑定成功,而Guest集合始终为空的原因。

下面是具体的修复步骤:

1. 修正模型类的访问修饰符

把Guest属性改为public,让模型绑定系统能够访问它:

public class GroupInviteVM 
{ 
    public int Id { get; set; } 
    // 关键:将私有属性改为public
    public List<ItemInvite> Guest { get; set; } 
    public GroupInviteVM() { Guest = new List<ItemInvite>(); } 
}

2. 明确指定模型绑定来源(可选但推荐)

虽然ASP.NET Core对复杂类型默认会从请求体读取数据,但显式添加[FromBody]特性能让代码意图更清晰,避免潜在的绑定歧义:

[HttpPost, ActionName("Invite")]
// 添加[FromBody]明确从JSON请求体绑定模型
public IActionResult Invite([FromBody] GroupInviteVM groupInviteVM) 
{ 
    // TODO 你的业务逻辑
    return Json(true); 
}

额外验证点(你的代码已经符合要求)

  • 你的AJAX请求已经正确设置了contentType: "application/json",确保服务器识别请求体格式
  • JSON.stringify(UserInvited)生成的JSON数据结构与模型完全匹配:Id是字符串类型会被框架自动转换为int,Guest数组的字段也和ItemInvite类的属性一一对应

做完以上修改后,再调试请求应该就能看到Guest集合被正确绑定了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 07:22:46