在创建帐户之前如何获取 userId?
How can I the userId before an account has been created?
我知道标题有点矛盾;但是,我有一个注册表单,它还需要用户提供更多详细信息,例如名字、姓氏等。
在帐户控制器的 Register 方法中,我添加了一个 Members object,用数据填充它,但是,我需要将正在注册的帐户的 GUID (UserId) 存储为"MemberId".
用户必须单击注册才能进入此 actionresult 方法,但在程序流离开之前不会创建 userId。
注册账号的userId returns null,如何获取?任何帮助表示赞赏。抱歉含糊不清。
public async Task<ActionResult> Register(RegisterForm model)
{
if (ModelState.IsValid)
{
var user = new ApplicationUser { UserName = model.RegisterViewModel.Email, Email = model.RegisterViewModel.Email };
var result = await UserManager.CreateAsync(user, model.RegisterViewModel.Password);
if (result.Succeeded)
{
await SignInManager.SignInAsync(user, isPersistent: false, rememberBrowser: false);
var members = new Members()
{
MemberId = new Guid(User.Identity.GetUserId()),
// Obviously the above returns null because there is no userId yet.
FirstName = model.Members.FirstName,
LastName = model.Members.LastName,
PhoneNumber = model.Members.PhoneNumber,
Role = model.Members.Role
};
_context.Members.Add(members);
_context.SaveChanges();
return RedirectToAction("Index", "Home");
}
AddErrors(result);
}
return View(model);
}
假设您正在使用 EntityFramework,在调用 UserManager.CreateAsync
之后,user.Id
的 属性 将被更新。
因此您可以像这样使用用户 ID:
MemberId = new Guid(user.Id)
我知道标题有点矛盾;但是,我有一个注册表单,它还需要用户提供更多详细信息,例如名字、姓氏等。
在帐户控制器的 Register 方法中,我添加了一个 Members object,用数据填充它,但是,我需要将正在注册的帐户的 GUID (UserId) 存储为"MemberId".
用户必须单击注册才能进入此 actionresult 方法,但在程序流离开之前不会创建 userId。
注册账号的userId returns null,如何获取?任何帮助表示赞赏。抱歉含糊不清。
public async Task<ActionResult> Register(RegisterForm model)
{
if (ModelState.IsValid)
{
var user = new ApplicationUser { UserName = model.RegisterViewModel.Email, Email = model.RegisterViewModel.Email };
var result = await UserManager.CreateAsync(user, model.RegisterViewModel.Password);
if (result.Succeeded)
{
await SignInManager.SignInAsync(user, isPersistent: false, rememberBrowser: false);
var members = new Members()
{
MemberId = new Guid(User.Identity.GetUserId()),
// Obviously the above returns null because there is no userId yet.
FirstName = model.Members.FirstName,
LastName = model.Members.LastName,
PhoneNumber = model.Members.PhoneNumber,
Role = model.Members.Role
};
_context.Members.Add(members);
_context.SaveChanges();
return RedirectToAction("Index", "Home");
}
AddErrors(result);
}
return View(model);
}
假设您正在使用 EntityFramework,在调用 UserManager.CreateAsync
之后,user.Id
的 属性 将被更新。
因此您可以像这样使用用户 ID:
MemberId = new Guid(user.Id)