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

.NET Core对象数组参数绑定失败,接收值为Null

问题分析与解决方案

我一眼就发现两个核心问题导致你的参数绑定失败,咱们一步步来修复:

1. 模型属性访问权限错误

你的AddOrderDetailsReq类里的ProductID和Qty都是私有(private)属性,而.NET Core的模型绑定系统只能读取和赋值公共(public)属性,私有属性根本无法被框架识别。

修改后的模型类:

public class AddOrderDetailsReq
{
    public int? OrderID { get; set; }
    public int? ProductID { get; set; } // 把private改为public
    public int? Qty { get; set; } // 同上
}

2. 请求数据结构与后端接收参数不匹配

前端传递的是一个包裹着OrderDetails数组的对象({ OrderDetails: [...] }),但后端方法直接接收AddOrderDetailsReq[]数组,两者结构完全不匹配,框架无法正确解析数据。

你需要创建一个和前端数据结构完全对应的请求类:

// 新增匹配前端结构的请求容器类
public class OrderDetailsRequest
{
    public List<AddOrderDetailsReq> OrderDetails { get; set; }
}

// 修改接口方法的参数类型
[HttpPost]
[ActionName("AddOrderDetails")]
public string AddOrderDetails([FromBody] OrderDetailsRequest request)
{
    // 通过request.OrderDetails即可获取前端传递的数组
    // 你的业务逻辑代码...
    return "操作成功";
}

可选优化:简化前端代码

Angular的$http会自动帮你序列化JSON对象,你不需要手动调用JSON.stringify,直接传递原始对象即可:

if (dataObj.OrderDetails.length > 0) {
    $http({
        method: "POST",
        url: "/你的接口路径/AddOrderDetails", // 记得补全实际接口URL
        data: dataObj, // 直接传对象,无需手动序列化
        headers: { 'Content-Type': 'application/json' }
    }).then(function(response) {
        // 处理成功回调
    }, function(error) {
        // 处理错误逻辑
    });
}

调整完成后,参数应该就能正常绑定了,赶紧试试吧!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:59:20