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

.NET Core:Get方法赋值的IDList在Post方法中为空的问题求助

解决Razor Pages Post方法中IDList为空的问题

我猜你遇到的核心问题是表单提交时没有把IDList的内容传递到后端——OnGet能正常获取是因为参数通过URL传递,模型绑定可以直接处理,但Post请求需要表单里包含对应字段才能完成绑定。

问题原因

你的IDList是List<int>类型,Razor Pages的模型绑定对于集合类型,要求表单元素的name属性符合特定格式(比如IDList[0]、IDList[1]),这样后端才能识别并把值组装成集合。而你目前的HTML里没有把IDList的项包含到提交的表单中,所以Post时自然为空。

解决方案

在你的Post表单中添加隐藏字段,把IDList的每个元素都渲染进去,确保提交表单时这些值能被传递到后端。注意要用for循环(不是foreach)来生成字段,这样才能生成正确的索引式name属性:

<form method="post">
    <!-- 你的其他表单内容 -->
    
    <!-- 渲染IDList的隐藏字段 -->
    @for (int i = 0; i < Model.IDList.Count; i++)
    {
        <input type="hidden" asp-for="IDList[i]" />
    }
    
    <button type="submit">提交</button>
</form>

为什么这样有效

  • asp-for="IDList[i]"会自动生成name="IDList[i]"和对应的value属性,后端模型绑定器能通过这个格式识别出这是集合的第i个元素,从而把所有值重新组装成List<int>赋值给IDList。
  • 用for循环而非foreach是因为foreach无法提供连续的索引,模型绑定器无法正确识别集合结构。

额外检查点

  1. 确认你的[BindProperty]特性没有限制只支持Get请求(默认支持Post,即便手动添加SupportsGet = true也不影响Post绑定)。
  2. 确保IDList在OnGet方法中已经被正确赋值,这样渲染表单时才有元素可以生成。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:39:18