gpt4 book ai didi

c# - 如何更改自定义字段(\Areas\Identity\Pages\Account\Manage\Index.cshtml.c)的值?

转载 作者:行者123 更新时间:2023-12-04 15:35:10 25 4
gpt4 key购买 nike

(环境:Visual Studio 2019 v16.4.3)

我使用以下选项创建一个新的“ASP.NET Core Web 应用程序”

  1. ASP.Net Core 3.1
  2. 有角度的
  3. 个人用户帐户的身份验证(使用“在应用程序中存储用户帐户”,唯一选项)

然后我执行以下操作以添加所有脚手架项目。

  • 在解决方案资源管理器中,右键单击项目 > 添加 > 新脚手架项
  • 在类 ApplicationUser 中添加了新字段 FirstNameLastName 并更新了代码以启用新字段的注册。名字和姓氏可以在注册后保存到数据库中。

现在我需要修改代码,使用户能够修改自定义字段FirstNameLastName。下面显示了该类(我对 FirstNameLastName 做了一些更改)。在方法 OnPostAsync() 中,它调用 _userManager.SetPhoneNumberAsync(user, Input.PhoneNumber) 来更改值。如何定义_userManager.SetFistNameAsync(user, Input.PhoneNumber)_userManager.SetLastNameAsync(user, Input.PhoneNumber)

\Areas\Identity\Pages\Account\Manage\Index.cshtml.cs

public partial class IndexModel : PageModel
{
private readonly UserManager<ApplicationUser> _userManager;
private readonly SignInManager<ApplicationUser> _signInManager;

public IndexModel(
UserManager<ApplicationUser> userManager,
SignInManager<ApplicationUser> signInManager)
{
_userManager = userManager;
_signInManager = signInManager;
}

public string Username { get; set; }

[TempData]
public string StatusMessage { get; set; }

[BindProperty]
public InputModel Input { get; set; }

public class InputModel
{
[Phone]
[Display(Name = "Phone number")]
public string PhoneNumber { get; set; }
[Display(Name = "First name")]
public string FirstName { get; set; }
[Display(Name = "Last name")]
public string LastName { get; set; }
}

private async Task LoadAsync(ApplicationUser user)
{
var userName = await _userManager.GetUserNameAsync(user);
var phoneNumber = await _userManager.GetPhoneNumberAsync(user);

Username = userName;

Input = new InputModel
{
PhoneNumber = phoneNumber,
FirstName = user.FirstName,
LastName = user.LastName
};
}

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)}'.");
}

await LoadAsync(user);
return Page();
}

public async Task<IActionResult> OnPostAsync()
{
var user = await _userManager.GetUserAsync(User);
if (user == null)
{
return NotFound($"Unable to load user with ID '{_userManager.GetUserId(User)}'.");
}

if (!ModelState.IsValid)
{
await LoadAsync(user);
return Page();
}

var phoneNumber = await _userManager.GetPhoneNumberAsync(user);
if (Input.PhoneNumber != phoneNumber)
{
var setPhoneResult = await _userManager.SetPhoneNumberAsync(user, Input.PhoneNumber);
if (!setPhoneResult.Succeeded)
{
var userId = await _userManager.GetUserIdAsync(user);
throw new InvalidOperationException($"Unexpected error occurred setting phone number for user with ID '{userId}'.");
}
}

await _signInManager.RefreshSignInAsync(user);
StatusMessage = "Your profile has been updated";
return RedirectToPage();
}
}

最佳答案

自从我使用 ASP.NET Core Identity 东西以来已经有一段时间了,但我相信你从这里更新你的自定义用户对象(GetUserAsync 应该返回你的自定义 ApplicationUser 类):

var user = await _userManager.GetUserAsync(User);
user.FirstName = Input.FirstName;
user.LastName = Input.LastName;

然后调用 _userManager.UpdateAsync(user):

await _userManager.UpdateAsync(user);

关于c# - 如何更改自定义字段(\Areas\Identity\Pages\Account\Manage\Index.cshtml.c)的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60033173/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com