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

.NET Core复杂对象绑定异常:Questions列表字段无法接收值

.NET Core表单提交时列表字段绑定为空的排查方案
  • 检查循环渲染的索引格式
    .NET Core的模型绑定对列表项的命名有强制要求,必须生成带连续整数索引的name属性(如Questions[0].Answer)。如果用foreach循环替代for循环,或者索引不连续(比如从1开始、中间断号),绑定会直接失败。正确的渲染写法示例:
@for (int i = 0; i < Model.Questions.Count; i++)
{
    @Html.HiddenFor(m => m.Questions[i].QuestionId)
    @Html.TextBoxFor(m => m.Questions[i].Answer)
}
  • 确认列表项类的属性权限
    CpdFeedbackQuestionAnswerModel的所有需要绑定的属性必须是公共可读写的(public get; set;),只读属性、私有属性或者仅设置了get的属性,模型绑定器无法完成赋值。

  • 校验表单提交的请求数据
    打开浏览器开发者工具(F12),切换到Network标签查看提交的Form Data,确认每个列表项的name属性格式是否为Questions[N].XXX(N为连续的整数索引)。如果name格式不符合要求,后端无法识别并绑定到List集合。

  • 检查控制器方法的绑定配置
    确保控制器方法用[HttpPost]修饰,参数直接使用CpdTestFeedbackFormModel model,不要添加[FromBody]特性(表单提交的是Form Data,而非JSON格式,[FromBody]仅适用于JSON/XML类型的请求体)。如果是AJAX提交,要保证请求的contentType为默认的application/x-www-form-urlencoded,不要随意改为application/json。

  • 排查自定义模型绑定器的干扰
    如果项目中实现了自定义模型绑定器,可能会覆盖默认的集合绑定逻辑。可以暂时移除自定义绑定器进行测试,或者调整自定义逻辑以支持列表类型的绑定。

  • 确认视图模型的初始化状态
    控制器返回视图时,必须确保model.Questions已完成初始化(比如model.Questions = new List<CpdFeedbackQuestionAnswerModel>()并添加对应数量的项)。如果渲染视图时Questions为null,生成的表单控件会缺失正确的name属性,导致提交后无法绑定。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 10:55:19