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

Asp.net Core中Controller无法接收Model列表问题求助

排查Asp.Net Core中Ajax提交OrderProducts列表无法被Controller接收的问题

以下是针对该问题的逐一排查点及解决方法:

1. 验证模型属性的可访问性与命名匹配

  • 确保OrderProducts类的目标属性为public且包含get/set方法,示例:
    public class OrderProducts
    {
        public int ProductId { get; set; }
        public int Quantity { get; set; }
        // 其他需绑定的属性...
    }
    
  • 前端提交的字段名必须与模型属性名完全匹配(Asp.Net Core默认大小写敏感),比如前端传productId无法绑定到模型的ProductId,需统一命名格式。

2. 修正Ajax请求的核心配置

  • 必须指定contentType为JSON格式,同时用JSON.stringify()序列化提交的数组,示例:
    // 构造选中的产品列表
    var selectedProducts = [
        { ProductId: 1, Quantity: 2 },
        { ProductId: 3, Quantity: 1 }
    ];
    
    $.ajax({
        url: '/PurchaseOrder/AddProduct',
        type: 'POST',
        contentType: 'application/json; charset=utf-8',
        data: JSON.stringify(selectedProducts),
        success: function(res) {
            // 处理成功逻辑
        },
        error: function(xhr) {
            // 处理错误
        }
    });
    
  • 不要添加traditional: true配置,该配置适用于旧版表单数组格式,与JSON数组不兼容。

3. 配置Controller Action的参数特性

  • 在Action参数上添加[FromBody]特性,明确告知框架从请求体读取JSON数据:
    [HttpPost]
    public IActionResult AddProduct([FromBody] List<OrderProducts> orderProducts)
    {
        if (!ModelState.IsValid)
        {
            // 输出绑定错误用于排查
            var errors = ModelState.SelectMany(x => x.Value.Errors.Select(e => e.ErrorMessage));
            return BadRequest(errors);
        }
        // 业务处理逻辑
        return Ok();
    }
    
  • 参数类型需与前端提交的结构匹配,使用List<OrderProducts>或IEnumerable<OrderProducts>接收数组。

4. 排查模型验证与请求日志

  • 检查ModelState.IsValid状态,若为false,直接返回绑定错误信息,快速定位字段不匹配问题。
  • 查看Asp.Net Core请求日志,确认请求体的JSON格式是否正确(有无语法错误、多余逗号等)。

5. 处理Anti-Forgery Token(若启用)

  • 若项目启用了防伪造验证,需在Ajax请求中携带Token:
    在View中添加Token:
    @Html.AntiForgeryToken()
    
    在Ajax请求中添加请求头:
    headers: {
        RequestVerificationToken: $('input[name="__RequestVerificationToken"]').val()
    }
    
    同时在Controller Action上添加[ValidateAntiForgeryToken]特性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 00:05:21