javascript - 添加到表单数据的 JavaScript 对象在服务器上始终接收为 null

标签 javascript c# reactjs asp.net-web-api multipartform-data

在前端(附加图像文件和包含产品详细信息的 JavaScript 对象):

 let f = new FormData();
 f.append('File', file);

 objectToSend = {
    ...values
 };

f.append('ProductDto', objectToSend );

await createProduct(f);

export const createProduct = async data => {
  return axiosWrapper.request({
    url: `/products`,
    method: 'POST',
    data: data,
  });
};

在后端(接收附加数据作为 FromForm):

// POST: api/products
[HttpPost]
public async Task<IActionResult> Post([FromForm]ProductFile file)
{
 // Create product
}

ProductFile 类如下所示:

public class ProductFile
{
   public IFormFile File { get; set; }
   public ProductDTO ProductDto{ get; set; } 
}

问题是 ProductDto 始终为 null,而 File 会按应有的方式填充。我不明白这是为什么?

P.S 我也试过这样附加它:

f.append('ProductDto', JSON.stringify(objectToSend));

干杯

最佳答案

您正在 FormData 中附加一个对象。表单数据接受键值对,其中的值应为描述的字符串 here .

首先尝试将对象转换为字符串

f.append('ProductDto', JSON.stringify(objectToSend) );

然后在您的后端,在访问它之前,将它转换回一个对象。

关于javascript - 添加到表单数据的 JavaScript 对象在服务器上始终接收为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58836383/

相关文章:

javascript - scrollToElement 没有用户交互

javascript - 本地 IndexedDB 安全性(数据库名称唯一性)

C# 应用程序 : how to view the loaded assemblies

c# - 在 Visual Studio 2015 编辑器中去掉 "diagonal arrow"

javascript - 将对象值返回给父函数

javascript - jQuery遍历顺序——深度优先

c# - 您如何将其转换为迭代函数而不是使用嵌套循环递归?

reactjs - React Slick prev 和 next 方法抛出错误

xcode - 在 React Native 上安装 OneSignal - 链接器命令失败,退出代码为 1

reactjs - 如何更改 React Material UI 上的 Stepper 颜色?