复杂类型数组的 OpenApi 3 多部分表单请求

OpenApi 3 multipart form request for complex type array

我创建了一个新的 Asp.Net Core 5.0 Web API 项目,我尝试上传一个文件和其他属性。其中一个属性是我定义的其他元素的列表。数据模型如下所示:

    public class Person
    {
        public string Surname { get; set; }
        public string FamilyName { get; set; }

        public IFormFile Image { get; set; }

        public List<Item> Items { get; set; } = new List<Item>();
    }

    public class Item
    {
        public string Value { get; set; }
        public string Description { get; set; }
    }

似乎 swagger 文档生成了具有正确 UI 的正确文件。不幸的是,我不知道数据必须是哪种格式,以便 ASP.NET 核心模型活页夹将其转换为有效模型。我试图将一些 json 对象插入“项目”框中,但我的列表一直为空。

控制器动作很标准:

        [HttpPost]
        public ActionResult Post([FromForm] Person p)
        {
            if (ModelState.IsValid)
            {
                return Ok();
            }

            return BadRequest();
        }

UI 看起来像这样。

到目前为止我还没有找到一个巧妙的解决方案,但我写了一个自定义模型活页夹,就像这里描述的那样。所以基本上请求有两个部分。一个是文件,一个是整个 JSON 数据。

https://thomaslevesque.com/2018/09/04/handling-multipart-requests-with-json-and-file-uploads-in-asp-net-core/