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

.NET 8中Fetch发送嵌套列表至控制器时数据为空求助

问题原因

核心问题是后端模型定义与前端发送的数据结构不匹配:

  • 后端ClientesVM类中的Preguntas属性是单个NegPreguntaDTO对象
  • 但前端发送的Preguntas是包含多个问题对象的数组(preguntasRespondidas是数组)

这种结构不匹配会导致ASP.NET Core的模型绑定失败,最终控制器接收的vm对象为空。

解决方案

根据业务需求,有两种修正方式:

方式一:修改后端模型支持多个问题(推荐)

如果业务需要提交多个问题答案,将ClientesVM中的Preguntas属性改为列表类型,并在构造函数中初始化:

using Aplicacion.DTOs;
using Dominio.Models;
using Microsoft.AspNetCore.Mvc.Rendering;
using System.Collections.Generic;

namespace WebApp.ViewModels
{
    public class ClientesVM
    {
        public ClientesVM()
        {
            DDLTiposRespuesta = new SelectList(new List<string>());
            DDLTiposDocumento = new SelectList(new List<string>());
            Preguntas = new List<NegPreguntaDTO>(); // 初始化列表避免空引用
        }

        // 其他原有属性保持不变

        // 修改为列表类型
        public List<WebApp.ViewModels.NegPreguntaDTO> Preguntas { get; set; }
        
        public SelectList DDLTiposRespuesta { get; set; }
        public SelectList DDLTiposDocumento { get; set; }
    }
}

方式二:修改前端发送单个问题对象(仅适用于单问题业务场景)

如果业务只需要单个问题答案,调整前端代码将数组改为单个对象:

// 仅获取单个select的值,去掉循环逻辑
let pregunta = {
    Id: 1,
    Respuesta: $('#FRMResponderPreguntas select').find('option:selected').val() || 'default_value'
};

let data = {
    'IdentificadorSesion': sesionVerificacion,
    'Preguntas': pregunta // 发送单个对象而非数组
};
额外验证点
  • 确认前端JSON属性名称与后端模型属性完全匹配(你的示例中Id和Respuesta大小写一致,无问题)
  • 控制器的[FromBody]特性已正确添加(你的代码中已配置,无需修改)
  • 可在控制器中添加日志排查模型绑定错误:
[HttpPost]
public async Task<JsonResult> GetHTMLVerificacion([FromBody] ClientesVM vm)
{
    var success = true;
    try
    {
        if (!ModelState.IsValid)
        {
            var errors = ModelState.Values.SelectMany(v => v.Errors.Select(e => e.ErrorMessage));
            Console.WriteLine(string.Join("; ", errors));
        }
    }
    catch (Exception ex)
    {
        success = false;
        Console.WriteLine(ex.Message);
    }

    return Json(new { success });
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 09:46:19