似乎无法通过PUT请求发送字符串

时间:2019-05-22 03:27:34

标签: angular asp.net-core asp.net-core-webapi

由于某种原因,我的PUT请求给出了BadRequest错误。我检查了原因是什么,原因是到达.NET端时“ gebruikersnaam”为空,而不是其值。

[HttpPut("naam")]
public async Task<IActionResult> VeranderNaam(string gebruikersnaam)
{
    IdentityUser user = await this._userManager.FindByNameAsync(User.Identity.Name);
    Gebruiker gebruiker = this._gebruikerRepository.GetBy(user.UserName);
    Brouwer brouwer = this._brouwerRepository.GetBy(user.UserName);

    user.UserName = gebruikersnaam;
    var result = await _userManager.UpdateAsync(user);

    if (result.Succeeded)
    {
        if(brouwer != null)
        {
            brouwer.Naam = gebruikersnaam;
            this._brouwerRepository.Update(brouwer);
            this._brouwerRepository.SaveChanges();
            return Ok();
        }
        else if(gebruiker != null)
        {
            gebruiker.Gebruikersnaam = gebruikersnaam;
            this._gebruikerRepository.Update(gebruiker);
            this._gebruikerRepository.SaveChanges();
            return Ok();
        }
    }

    return BadRequest();
}

角度代码

    onSubmitNaam() {
        console.log(this.gebruikersnaam.value.gebruikersnaam);
        this.authService.veranderNaam(this.gebruikersnaam.value.gebruikersnaam).subscribe(
          () => {
            this.success = "Uw naam is met success aangepast";
          }, err => {
            this.error = "Uw naam is niet aangepast";
          }
        )

        this.gebruikersnaam.reset();
    }

    veranderNaam(gebruikersnaam: string) {
        return this.http.put(`${environment.apiUrl}/gebruikers/naam`, gebruikersnaam);
    }

我知道我的表单获取值,它是通过请求通过表单发送的,但是在到达请求时它“变成”空。

1 个答案:

答案 0 :(得分:2)

在这一行代码中,您要提交body而不是查询字符串

return this.http.put(`${environment.apiUrl}/gebruikers/naam`, gebruikersnaam);

因此,如果您希望代码能够正常工作,则可以更改为

public async Task<IActionResult> VeranderNaam([FromBody] string gebruikersnaam)

或者您可以使用queryParams