Postman POST 请求模型绑定不适用于 IFormfile 属性

Postman POST request Model binding not working with an IFormfile property

我有这样的模型。

    public class ClientDto
    {
       public string FirstName { get; set; }
       public string LastName { get; set; }
       public string PhoneNumber { get; set; }
       public string Address { get; set; }
       public IFormFile ProfilePicture { get; set; }
     }

和 API 控制器是这样的:

    [HttpPost]
    public async Task<OperationResult> Post([FromForm] ClientDto c)
    {
        ImageHandler handler = new ImageHandler(env);
        Client client = new Client()
        {
            Address = c.Address,
            FirstName = c.FirstName,
            LastName = c.LastName,
            PhoneNumber = c.PhoneNumber,
            PhotoPath = await handler.UploadFile(c.ProfilePicture)
        };
        return await clientRepository.AddClient(client);
    }

现在,如果我在包含以 ProfilePicture 作为键的文件后向邮递员发出 Post 请求(在 Postman >> Body >> form-data 部分 ), 模型绑定按预期工作。 api 控制器接收 PofilePicture 和其余属性 null。但是如果我像这样为其他属性包含 json 字符串( 在 Postman >> Body >> raw 部分下)

    {
     "c":{
          "FirstName": "XYZ",
          "LastName":"ABX"
         }
    }

     {
          "FirstName": "XYZ",
          "LastName":"ABX"
     }

模型绑定不再有效。如果我想提供所有属性,如何使用邮递员点击 api 控制器?

您正在混合发送到控制器的数据 - 它很混乱。

在您的图片请求中,内容类型为 multipart/form-data,因为正文包含文件和可能的其他表单数据字段。在带有 JSON 的请求中,内容类型是 application/json 并且您没有发送任何文件数据。

您必须决定是仅发送 JSON 还是表单数据。

在这种情况下,由于您要发送文件,因此您需要使用 multipart/form-data 并仅在 Postman (see how to set Postman form-data parameters here) 的表单字段中设置缺少的字段。