将数据发送为 multipart/form-data

Send data as multipart/form-data

我有 .NET Core 后端,它接收 DTO 作为表单数据。

这是控制器

 [HttpPost]
    public async Task<IActionResult> Register([FromForm] RegisterDto model)
    {
        var result = await _authAppService.Register(model);
        if (result.Code == 409)
        {
            return BadRequest();
        }

        return Ok(result.Token);
    }

这是DTO

 public class RegisterDto
{
    [Required]
    public string Email { get; set; }
    [Required]
    public string Password { get; set; }
    [Required]
    public string PasswordConfirmation { get; set; }
    [Required]
    public string FirstName { get; set; }
    [Required]
    public string LastName { get; set; }
    public string GcmToken { get; set; }
}

我需要通过表单数据从 Angular 应用发送数据

我在Angular侧定义了模型

就在这里

export class RegisterDto{
Email: string;
Password: string;
PasswordConfirmation: string;
FirstName: string;
LastName: string;

}

这就是我尝试发送表单数据的方式

register(){
  const formData =  new FormData();
  formData.append(this.registerObject);

}

在附加方法中我有这个错误к

Expected 2-3 arguments, but got 1.ts(2554)

如何通过表单数据发送 DTO?

如果不给它一个字段名,就不能追加整个对象。正如错误所说,它接受 2-3 个参数,但是您只提供了一个参数而没有给它一个字段名称。

register(){
     const formData = new FormData();
     formData.append('regObj', this.registerObject);
}

但是,如果您将每个字段附加为表单数据值,例如。

formGroup: FormGroup;
formData: FormData;

register() { 
    this.formData.append('Email', this.formGroup.controls.Email.value);
    this.formData.append('Password', this.formGroup.controls.Password.value);
    this.formData.append('FirstName', this.formGroup.controls.FirstName.value);
    this.formData.append('LastName', this.formGroup.controls.LastName.value);

    // call your service and send it
}