📅  最后修改于: 2023-12-03 14:39:44.929000             🧑  作者: Mango
在开发 Web 应用时,我们通常需要从客户端发送过来的表单数据中获取相应的信息,其中可能包含多个对象的数组。本文将介绍如何使用 C# 从 formData 中读取对象数组。
在 ASP.NET Core 中,我们可以使用 IFormCollection
接口来获取 formData 数据。如下所示:
[HttpPost]
public IActionResult MyAction(IFormCollection form)
{
// 从 form 中获取数据
return Ok();
}
为了从 formData 中读取对象数组,我们需要将其转换为相应的类型。假设我们有一个名为 Person
的类,它拥有以下属性:
public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
}
我们可以将 formData 中的数据转换为 Person
类型的对象数组,如下所示:
[HttpPost]
public IActionResult MyAction(IFormCollection form)
{
List<Person> people = new List<Person>();
foreach (var key in form.Keys)
{
if (key.StartsWith("person") && form[key].Count > 0)
{
var index = int.Parse(key.Replace("person", ""));
var firstName = form["person[" + index + "][firstName]"];
var lastName = form["person[" + index + "][lastName]"];
var person = new Person
{
FirstName = firstName,
LastName = lastName
};
people.Add(person);
}
}
return Ok(people);
}
在上述代码中,我们首先定义了一个 List<Person>
对象,用于存储转换后的数据。然后,我们遍历 formData 中的所有键,并检查其是否以 "person" 开头。如果是,则获取相应的 FirstName
和 LastName
属性的值,并将其转换为 Person
类型的对象。
最后,我们可以将转换后的对象数组返回给客户端。在 ASP.NET Core 中,我们可以使用 IActionResult
来实现这一点。例如,我们可以返回一个包含转换后的对象数组的 OkObjectResult
,如下所示:
[HttpPost]
public IActionResult MyAction(IFormCollection form)
{
List<Person> people = new List<Person>();
// 从 form 中获取数据并转换为 Person 类型的对象数组
// ...
return new OkObjectResult(people);
}
本文介绍了如何使用 C# 从 formData 中读取对象数组。首先,我们需要获取 formData 数据,然后将其转换为相应的类型,最后将结果返回给客户端。希望本文能够对你有所帮助!