📜  c# 从 formdata 中读取对象数组 - C# (1)

📅  最后修改于: 2023-12-03 14:39:44.929000             🧑  作者: Mango

C# 从 formData 中读取对象数组

在开发 Web 应用时,我们通常需要从客户端发送过来的表单数据中获取相应的信息,其中可能包含多个对象的数组。本文将介绍如何使用 C# 从 formData 中读取对象数组。

1. 获取 formData 数据

在 ASP.NET Core 中,我们可以使用 IFormCollection 接口来获取 formData 数据。如下所示:

[HttpPost]
public IActionResult MyAction(IFormCollection form)
{
    // 从 form 中获取数据
    return Ok();
}
2. 将 formData 转换为对象数组

为了从 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" 开头。如果是,则获取相应的 FirstNameLastName 属性的值,并将其转换为 Person 类型的对象。

3. 将结果返回给客户端

最后,我们可以将转换后的对象数组返回给客户端。在 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 数据,然后将其转换为相应的类型,最后将结果返回给客户端。希望本文能够对你有所帮助!