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

MVC中List<>对象数量超200时Post接收为null问题求助

问题解决:Post大集合时后端接收为null

核心原因

你遇到的问题是因为ASP.NET默认限制了模型绑定的最大集合项数(默认200),当集合元素超过这个数量时,模型绑定会直接失败,导致ListGraf为null。这个限制和你设置的RequestSizeLimit是两回事——后者管的是请求总大小,前者管的是单个集合可绑定的元素数量。

解决方案

1. 针对ASP.NET MVC(非Core)项目

在Web.config的<appSettings>节点中添加/修改以下配置,设置更大的集合项数上限:

<appSettings>
  <!-- 设置你需要的最大集合项数,比如1000 -->
  <add key="aspnet:MaxHttpCollectionKeys" value="1000" />
</appSettings>

同时确保请求大小配置足够(和你已有的RequestSizeLimit对应,传统MVC还需设置maxRequestLength):

<system.web>
  <!-- 单位是KB,这里设置为100MB -->
  <httpRuntime maxRequestLength="102400" />
</system.web>

2. 针对ASP.NET Core项目

在Program.cs(或Startup.cs)的服务配置中,修改MvcOptions的集合大小限制:

builder.Services.AddMvc(options =>
{
    // 设置你需要的最大集合项数,比如1000
    options.MaxModelBindingCollectionSize = 1000;
});

另外如果使用Kestrel,还可以确保请求体大小限制足够:

builder.WebHost.ConfigureKestrel(serverOptions =>
{
    // 设置最大请求体大小为100MB
    serverOptions.Limits.MaxRequestBodySize = 100 * 1024 * 1024;
});

3. 检查前端表单的索引连续性

确保Razor生成的表单元素索引是连续的(0,1,2,...n),如果中间有缺失的索引(比如删除了某一行但没重新排序索引),模型绑定会在缺失位置后停止绑定,导致后面的元素无法被识别,最终集合数量不足或为null。

比如要确保生成的input name属性是ListGraf[0].zdarzenie、ListGraf[1].zdarzenie...这样连续的格式,而非出现跳号的情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 00:15:30