我想让我的 HTTPPost 接受多个输入,单个输入工作得很好,但是当我想输入多个值(如第二张图片中所示)时,它给了我一个 JSON 错误,并说“需要 typeCreate 字段”
我尝试添加一个 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");
}
接受
IEnumerable<TypeDto>
。
public IActionResult CreateType([FromBody] IEnumerable<TypeDto> typeCreate)
json请求就变成这样了:
{
[
{ "types": "string111" },
{ "types": "string222" }
]
}
或者,如果它只有类型,您可以将
Types
中的 TypeDto
改为 IEnumerable<string>
。然后,您可以迭代 typeDto.Types。