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

如何通过jQuery向ASP.NET MVC控制器发送对象列表和图片数据

解决方案

你需要按照ASP.NET MVC默认模型绑定的命名规则,手动将所有字段填充到FormData中即可正常绑定,无需额外序列化操作,具体实现如下:


1. 前端构造FormData代码

// 初始化FormData对象
var formData = new FormData();

// 填充Research对象的基础属性
formData.append('Research.Id', idInput.val());
formData.append('Research.Title', titleInput.val());
formData.append('Research.Abstract', abstractInput.val());
formData.append('Research.Body', bodyInput.val());
// 填充图片文件
if (imageInput.get(0).files.length > 0) {
    formData.append('Research.ImageFile', imageInput.get(0).files[0]);
}

// 填充ResearchAuthors列表,必须带索引后缀匹配MVC列表绑定规则
$('#authors-tbody tr').each(function (index) {
    var authorId = $(this).children('.id-td').text();
    var raId = $(this).children('.researchAuthorsId-td').text();
    var researchId = idInput.val();
    
    formData.append(`ResearchAuthors[${index}].Id`, raId);
    formData.append(`ResearchAuthors[${index}].AuthorId`, authorId);
    formData.append(`ResearchAuthors[${index}].ResearchId`, researchId);
});

2. 提交AJAX请求配置

$.ajax({
    url: '/你的控制器名称/Create',
    type: 'POST',
    data: formData,
    // 必须添加以下两个配置,禁止jQuery自动处理数据和修改请求头
    contentType: false,
    processData: false,
    success: function (res) {
        // 自定义提交成功逻辑
        console.log(res.message);
    },
    error: function (err) {
        // 自定义提交失败逻辑
    }
});

注意事项

  • 列表字段的索引必须从0开始连续递增,不能中断,否则MVC会停止绑定后续的列表项
  • 如果你使用的是ASP.NET Core,绑定规则完全一致,只需将后端的HttpPostedFileWrapper替换为IFormFile即可
  • 不需要修改现有控制器、ViewModel的任何代码,前端按上述规则传值即可正常完成模型绑定

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 02:54:04