在创建帐户之前如何获取 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)