asp.net mvc中的FormData与文件上传和其他非文件的数据

本文关键字:文件 其他 数据 中的 mvc FormData asp net | 更新日期: 2023-09-27 17:49:22

我试图在asp .net mvc中使用FormData为我的数据库中的特定项目上传图像。为此,我需要与图像一起发送数据库中链接图像的项目的id。

我需要使用FormData,因为我需要页面不刷新。所以我使用jquery ajax与图像。

我使用formdata添加了图像的id。追加,但我得到一个错误的服务器,它告诉我,当做ajax请求时调用的方法的id参数,是不可空的,所以它不能被映射。它应该映射到我前面提到的数据库中项目的id。

但是我在表单数据中添加了项目的id。

这是我的javascript代码:
var formData = new FormData();
var totalFiles = document.getElementById("inputImage").files.length;
formData.append("categoryId", response.data.toString());
for (var i = 0; i < totalFiles; i++) {
    var file = document.getElementById("inputImage").files[i];
    formData.append("categoryImage", file);
}
$.ajax("@Url.Action("SaveCategoryImage", "Categories")",
{
    type: "POST",
    dataType: "JSON",
    data: formData,
    contentType: false,
    processData: false,
    headers: { __RequestVerificationToken: $('input[name=__RequestVerificationToken]').val() }
});

这是控制器中应该被调用的方法

public async Task<ActionResult> SaveCategoryImage(long cateogoryId, HttpPostedFileBase image)
{
    return new JsonNetResult(new BasicActionResultViewModel {IsSuccessful = true});
}

那么为什么asp.net mvc不把我在表单数据中发送的id映射到控制器方法中的id呢?

asp.net mvc中的FormData与文件上传和其他非文件的数据

结果是我打错了,表单数据中categoryId的键与控制器中方法中的键不同。我还从ajax调用中删除了数据类型。