将数据作为多部分/表单数据发送

时间:2020-09-20 19:49:20

标签: asp.net angular asp.net-core multipartform-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);

}

在append方法中,我有此错误

预期2-3个参数,但得到1.ts(2554)

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

1 个答案:

答案 0 :(得分:1)

您不能在不给它一个字段名称的情况下附加整个对象。如错误所示,它接受2-3个参数,但是您只提供了一个参数而没有给出字段名称。

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

但是,如果您将每个字段都附加为诸如formdata的值,则很好。

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
}