Я просматриваю стандартные страницы управления учетными записями идентификационных данных в проекте Asp. Net Core веб-сайта. OnGetAsyn c () на странице Razor электронной почты для изменения загружает текущего пользователя с помощью UserManager.GetUserAsyn c (). Затем он вызывает другой метод для загрузки адреса электронной почты и значения IsEmailConfirmed в свойства модели страницы.
Метод загрузки использует UserManager.GetEmailAsyn c (user) вместо только user.Email. Зачем кодировщикам Microsoft это делать?
То же самое и с IsEmailConfirmed, используя UserManager.IsEmailConfirmedAsyn c (user) вместо user.IsEmailConfirmed.
Что мне не хватает ?
public partial class Email : PageModel
{
public string Email { get; set; }
[BindProperty]
public InputModel Input { get; set; }
public bool IsEmailConfirmed { get; set; }
public async Task<IActionResult> OnGetAsync()
{
var user = await _userManager.GetUserAsync(User);
if (user == null)
{
return NotFound($"Unable to load user with ID '{_userManager.GetUserId(User)}'.");
}
// user should be valid here.
await LoadAsync(user);
return Page();
}
protected async Task LoadAsync(IdentityUser user)
{
// user should be valid here.
// Why not just "string email = user.Email"?
string email = await _userManager.GetEmailAsync(user);
Email = email;
Input = new InputModel { NewEmail = email };
// Why not just do "IsEmailConfirmed = user.IsEmailConfirmed"?
IsEmailConfirmed = await _userManager.IsEmailConfirmedAsync(user);
}
public class InputModel
{
[Required]
[EmailAddress]
[Display(Name = "New email")]
public string NewEmail { get; set; }
}
}```