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

ASP.NET Core MVC提交大量数据时View向Controller传null值问题

解决思路

1. 调整模型绑定集合大小限制

ASP.NET Core 默认对模型绑定的集合项数有配置限制,你的问题刚好在64条触发,大概率是MaxModelBindingCollectionSize的阈值设置导致。在Program.cs中修改配置:

builder.Services.AddControllersWithViews(options =>
{
    // 设置为你需要的最大条目数,比如200
    options.MaxModelBindingCollectionSize = 200;
});

同时要检查表单值总数的限制,每个列表项如果包含多个属性,64条的总键值对可能超过默认的ValueCountLimit(默认1024),一并调整:

builder.Services.Configure<FormOptions>(options =>
{
    // 根据你的单条数据字段数计算,比如每条10个字段,200条就是2000
    options.ValueCountLimit = 2000;
});

2. 确认表单元素命名格式

确保for循环渲染的表单元素name属性严格遵循ASP.NET Core模型绑定要求,比如:

@for (int i = 0; i < Model.Items.Count; i++)
{
    <input type="text" name="Items[@i].Name" value="@Model.Items[i].Name" />
    <input type="number" name="Items[@i].Quantity" value="@Model.Items[i].Quantity" />
}

必须使用连续的索引(从0开始无间隔),否则模型绑定器可能无法正确识别集合,当条目数超过一定值时会直接返回null。

3. 检查请求大小限制

如果提交的内容包含文件或大文本,可能触发请求长度限制,导致请求被截断。调整表单多部分内容长度限制:

builder.Services.Configure<FormOptions>(options =>
{
    // 设置为合适的大小,比如10MB
    options.MultipartBodyLengthLimit = 10 * 1024 * 1024;
});

也可以在接收请求的控制器方法上添加特性:

[RequestSizeLimit(10 * 1024 * 1024)]
public IActionResult Submit(YourModel model)
{
    // ...
}

4. 启用模型绑定日志排查

如果以上方法都无效,开启模型绑定的调试日志,查看具体失败原因。在appsettings.json中添加:

{
  "Logging": {
    "LogLevel": {
      "Microsoft.AspNetCore.Mvc.ModelBinding": "Debug"
    }
  }
}

运行程序后查看日志,会输出模型绑定过程中的详细错误信息,比如哪个字段绑定失败、是否触发了限制规则等。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 19:17:25