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
相关产品推荐
相关产品推荐

