【问题标题】:How to set PhoneNumber in AspNetUsers table when using individual user accounts使用单个用户帐户时如何在 AspNetUsers 表中设置 PhoneNumber
【发布时间】:2020-01-15 12:39:51
【问题描述】:

我创建了一个新的 Asp.Net Web API 项目并使用了身份验证类型“个人用户帐户”,它创建了一个包含一些默认表的数据库。 然后我成功地创建了一些带有电子邮件和密码的帐户。 当用户注册时,我希望他们输入一个电子邮件地址、一个密码和一个电话号码,这应该将相应的值添加到 AspNetUsers 表中的相应列中。

我已成功添加电子邮件地址和密码,但如何添加电话号码?

到目前为止,我已经在帐户控制器中编辑了提交电话号码的注册方法

// POST api/Account/Register
    [AllowAnonymous]
    [Route("Register")]
    public async Task<IHttpActionResult> Register(RegisterBindingModel model)
    {
        if (!ModelState.IsValid)
        {
            return BadRequest(ModelState);
        }

        var user = new ApplicationUser() { UserName = model.Email, Email = model.Email, PhoneNumber = model.PhoneNumber };

        IdentityResult result = await UserManager.CreateAsync(user, model.Password);

        if (!result.Succeeded)
        {
            return GetErrorResult(result);
        }

        return Ok();
    }

我还编辑了 RegisterBindingModedl 以合并 PhoneNumber 属性

public class RegisterBindingModel
    {
        [Required]
        [Display(Name = "Email")]
        public string Email { get; set; }

        [Required]
        [StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)]
        [DataType(DataType.Password)]
        [Display(Name = "Password")]
        public string Password { get; set; }

        [DataType(DataType.Password)]
        [Display(Name = "Confirm password")]
        [Compare("Password", ErrorMessage = "The password and confirmation password do not match.")]
        public string ConfirmPassword { get; set; }

        [Required]
        [StringLength(11, ErrorMessage = "The telephone number must be 11 characters long.", MinimumLength = 11)]
        [DataType(DataType.PhoneNumber)]
        [Display(Name = "Phone Number")]
        public string PhoneNumber { get; set; }
    }

当我使用邮递员提交电话号码时

{
    "Email": "test@gmail.com",
    "Password": ".Password123.",
    "ConfirmPassword": ".Password123.",
    "PhoneNumber": "01642333333"
}

用户被提交到数据库,它给出 200 响应并提交。 在数据库中查看数据库时,出现用户但PhoneNumber为空。

如何添加具有 PhoneNumber 的用户?

【问题讨论】:

  • 您忘记将电话号码添加到型号更改var user = new ApplicationUser() { UserName = model.Email, Email = model.Email, EmailConfirmed = true };此行到此行var user = new ApplicationUser() { UserName = model.Email, Email = model.Email, PhoneNumber = model.PhoneNumber, EmailConfirmed = true };
  • 我有我的代码来改变它,但它仍然不起作用。我已经编辑了上面的代码,我是如何在我的代码中编辑它的

标签: c# asp.net asp.net-web-api asp.net-identity


【解决方案1】:

在您创建用户后在您的注册发布方法中尝试调用

await _usermanager.SetPhoneNumberAsync(user, model.PhoneNumber)

【讨论】:

  • 我已经编辑了我的代码并编辑了我发布到您建议的问题中的代码,但结果仍然相同。 PhoneNumber 未按预期保存到数据库中。
  • 在你的代码中放一个断点,看看它是否真的有价值@CraigMartin
  • @CraigMartin 更新了我的答案
猜你喜欢
  • 1970-01-01
  • 2016-09-11
  • 2019-09-01
  • 1970-01-01
  • 2019-02-03
  • 1970-01-01
  • 1970-01-01
  • 2013-03-10
  • 2017-10-15
相关资源
最近更新 更多