由于某种原因,我的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);
}
我知道我的表单获取值,它是通过请求通过表单发送的,但是在到达请求时它“变成”空。
答案 0 :(得分:2)
在这一行代码中,您要提交body
而不是查询字符串
return this.http.put(`${environment.apiUrl}/gebruikers/naam`, gebruikersnaam);
因此,如果您希望代码能够正常工作,则可以更改为
public async Task<IActionResult> VeranderNaam([FromBody] string gebruikersnaam)
或者您可以使用queryParams