ASP.NET 使用 foreach 循环接受多个 swagger 输入

问题描述 投票:0回答:1

我想让我的 HTTPPost 接受多个输入,单个输入工作得很好,但是当我想输入多个值(如第二张图片中所示)时,它给了我一个 JSON 错误,并说“需要 typeCreate 字段”single input multiple inputs

我尝试添加一个 foreach 循环,但我不知道它的正确实现。对于正常运行的代码,只需去掉foreach循环即可。我的 TypeDto 只有 {get; set;} 用于 Id 和 Type,与 TestModelType 相同

        [HttpPost]
        [ProducesResponseType(204)]
        [ProducesResponseType(400)]
        public IActionResult CreateType([FromBody] TypeDto typeCreate)
        {
            if(typeCreate == null)
            {
                return BadRequest(ModelState);
            }
            foreach (typeCreate in _typeRepos.GetTypes) {
                    var type = _typeRepos.GetTypes()
                        .Where(t => t.Types.Trim().ToUpper() == typeCreate.Types.TrimEnd().ToUpper())
                        .FirstOrDefault();

                    if (type != null)
                    {
                        ModelState.AddModelError("Model Type", "Type already exists");
                        return StatusCode(422, ModelState);
                    }
                    if (!ModelState.IsValid)
                    {
                        return BadRequest(ModelState);
                    }
                    var typeMap = _mapper.Map<TestModelType>(typeCreate);
                    if (!_typeRepos.CreateType(typeMap))
                    {
                        ModelState.AddModelError("Error", "Can't save");
                        return StatusCode(500, ModelState);
                    }
                }
            return Ok("Succesfully created");
        }
c# asp.net-mvc swagger-ui
1个回答
0
投票

接受

IEnumerable<TypeDto>

        public IActionResult CreateType([FromBody] IEnumerable<TypeDto> typeCreate)

json请求就变成这样了:

{
  [
     { "types": "string111" },
     { "types": "string222" }
  ]
}

或者,如果它只有类型,您可以将

Types
中的
TypeDto
改为
IEnumerable<string>
。然后,您可以迭代 typeDto.Types。

© www.soinside.com 2019 - 2024. All rights reserved.