【发布时间】:2021-04-07 17:52:10
【问题描述】:
我正在尝试使用 UpdateAsync 方法使用 ASP.NET CORE WEB API 更新 AspNetUser 的某些字段。我尝试了以下但抛出错误,显示用户名不能为空。对于这种情况,我只想更新电话号码。
控制器
public async Task<IActionResult> UpdateUserAync([FromBody] RegisterViewModel model)
{
if (ModelState.IsValid)
{
var result = await _userService.UpdateUserAsync(model);
if (result.IsSuccess)
return Ok(result);
return BadRequest(result);
}
return BadRequest("Some Properties are not valid!");
}
服务
public async Task<UserUpdateResponse> UpdateUserAsync(RegisterViewModel model)
{
var user = await _userManager.FindByEmailAsync(model.Email);
var phoneNumber = await _userManager.GetPhoneNumberAsync(user);
if (user == null)
throw new NullReferenceException("Update model is null");
if (phoneNumber!=null)
return new UserUpdateResponse
{
Message = "Sorry you can't update!",
IsSuccess = false,
};
var identityUser = new IdentityUser
{
PhoneNumber = model.PhoneNumber
};
var result = await _userManager.UpdateAsync(identityUser);
if (result.Succeeded)
{
return new UserUpdateResponse
{
Message = "Phone number updated Successfully",
IsSuccess = true,
Errors = result.Errors.Select(e => e.Description)
};
}
return new UserUpdateResponse
{
Message = "Phone number didnot Updated!",
IsSuccess = false,
Errors = result.Errors.Select(e => e.Description)
};
}
在这里,我只想根据用户电子邮件/用户 ID 更新某些字段。
错误消息
{
"message": "Phone number didnot Updated!",
"isSuccess": false,
"errors": [
"User name '' is invalid, can only contain letters or digits."
],
"expireDate": null
}
【问题讨论】:
-
不要创建一个新的
IdentityUser,使用var user中现有的一个 -
@CamiloTerevinto 谢谢它的工作。我很困惑是否使用身份对象。
-
@CamiloTerevinto 是否可以使用 CodeFirst 方法更新身份表的字段,请指导我对此的任何参考。
-
这是一个完全不同的问题,我建议你先使用你最喜欢的搜索引擎
-
@MakeMeFly An example of adding new column。请小心,因为它会删除并重新创建您的数据库
标签: c# asp.net-core asp.net-core-identity