将 Angular FormData 中的 int 列表发送到 C# 中的 POST Web API

Nim*_*hew 3 c# asp.net asp.net-core angular

我想将对象内的整数列表发送到 C# 中的 POST API。这就是我正在做的:

const headers = new HttpHeaders().append(
  "Content-Disposition",
  "multipart/form-data"
);

let formData: FormData = new FormData();
formData.append("name", "name");
formData.append("Ids", JSON.stringify(Ids));
return this._http.post(
  `${environment.baseUrl}${this.companyApiUrl}`,
  formData,
  { headers: headers }
);
Run Code Online (Sandbox Code Playgroud)

Ids类型在哪里number[]

以下是 C# WebAPI:

public ActionResult<MyModel> Post([FromForm] MyModel model)
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

MyModel:

public class MyModel
{
    public string Name { get; set; }
    public List<int> Ids { get; set; } // I have also tried int[]
}
Run Code Online (Sandbox Code Playgroud)

我从 Web API 收到以下错误:

{“Ids”:[“值'[5,6,7]'无效。”]}

我该如何实现这一目标?Ids我想将in的类型保留MyModelList<int>or int[](直接发送 Id,而不在服务器中进行 JSON 解析)。

Ale*_*der 7

为了允许ASP.NET Core模型绑定器绑定数组,您需要使用相同的参数名称多次添加数组值

let formData: FormData = new FormData();
formData.append("name", "name");
for(let i = 0; i < Ids.length; i++) {
    formData.append("Ids", Ids[i]);
}
Run Code Online (Sandbox Code Playgroud)