来自 React 的 FormData 对象不会在后端 C# 上转换为模型
FormData object from React doesnt convert on backend C# to model
我有使用 React Native 制作的应用程序,后端 API 使用 .NET C#。
我正在尝试从前端向后端发送一些数据
反应
let formData = new FormData();
formData.append('token', token)
formData.append('document', document)
formData.append('file', file);
其中 token
是一个字符串,file
是一些文件,但是 document
是一个带有 Id
和 Name
等参数的对象。所以在后端我收到这样的数据
C#
[HttpPost]
[AllowAnonymous]
public ActionResult SendDocument(string token, DocumentMobile document, HttpPostedFileBase file)
{
//do thins
}
问题是对象 document
没有转换成 DocumentMobile
模型,就像以前不使用 FormData
那样,里面的所有 props 都是空的。
如何操作?
您需要绑定 class 的每个属性,这就是模型绑定器的工作方式,它正在寻找 class 的属性名称。因此,取决于您的 document
class 的结构,以下其中一项应该适用于您的情况:
formData.append('Id', document.Id)
formData.append('Name', document.Name)
或者这样:
formData.append('document', {Id: document.Id, Name: document.Name})
或:
formdata.append("document[id]", document.Id)
formdata.append("document[name]", document.Name)
对于文件,您可能想使用这样的东西:
formData.append('file', {uri: file, name: 'image.jpg', type: 'image/jpeg'})
默认情况下,模型绑定以键值对的形式获取数据,假设两者都是字符串。文件除外。
你可以像这样传递键值对
formData.append('document.title', document.title)
或者,您可以构建自定义模型活页夹。就像this SO.
中描述的那样
我有使用 React Native 制作的应用程序,后端 API 使用 .NET C#。 我正在尝试从前端向后端发送一些数据
反应
let formData = new FormData();
formData.append('token', token)
formData.append('document', document)
formData.append('file', file);
其中 token
是一个字符串,file
是一些文件,但是 document
是一个带有 Id
和 Name
等参数的对象。所以在后端我收到这样的数据
C#
[HttpPost]
[AllowAnonymous]
public ActionResult SendDocument(string token, DocumentMobile document, HttpPostedFileBase file)
{
//do thins
}
问题是对象 document
没有转换成 DocumentMobile
模型,就像以前不使用 FormData
那样,里面的所有 props 都是空的。
如何操作?
您需要绑定 class 的每个属性,这就是模型绑定器的工作方式,它正在寻找 class 的属性名称。因此,取决于您的 document
class 的结构,以下其中一项应该适用于您的情况:
formData.append('Id', document.Id)
formData.append('Name', document.Name)
或者这样:
formData.append('document', {Id: document.Id, Name: document.Name})
或:
formdata.append("document[id]", document.Id)
formdata.append("document[name]", document.Name)
对于文件,您可能想使用这样的东西:
formData.append('file', {uri: file, name: 'image.jpg', type: 'image/jpeg'})
默认情况下,模型绑定以键值对的形式获取数据,假设两者都是字符串。文件除外。
你可以像这样传递键值对
formData.append('document.title', document.title)
或者,您可以构建自定义模型活页夹。就像this SO.
中描述的那样