Как исправить EntityValidationError при регистрации нового пользователя? - PullRequest
0 голосов
/ 29 мая 2019

Я создал новый проект с индивидуальными учетными записями пользователей и добавил 2 свойства (отображаемое имя и имя пользователя (в коде DisplayName / LoginUsername)), в то время как DisplayName не доставляло мне никаких проблем, очевидно, LoginUsername было проблемой для программы.

Я пытался добавить его в миграцию, я пытался сделать это без LoginUsername, которое работало, но это не то, что я хотел, и я пытался искать в Интернете безрезультатно.

Часть с ошибкой

        [HttpPost]
        [AllowAnonymous]
        [ValidateAntiForgeryToken]
        public async Task<ActionResult> Register(RegisterViewModel model)
        {
            if (ModelState.IsValid)
            {
                var user = new ApplicationUser { UserName = model.LoginUsername, Email = model.Email, DisplayName = model.DisplayName };
                var result = await UserManager.CreateAsync(user, model.Password);
                if (result.Succeeded)
                {
                    await SignInManager.SignInAsync(user, isPersistent:false, rememberBrowser:false);

                    return RedirectToAction("Index", "Home");
                }
                AddErrors(result);
            }

            return View(model);
        }

Мой RegisterViewModel включает в себя

    public class RegisterViewModel
    {
        [Required]
        [Display(Name = "Display name")]
        public string DisplayName { get; set; }

        [Required]
        [Display(Name = "Username")]
        public string LoginUsername { get; set; }

        [Required]
        [EmailAddress]
        [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; }
    }

Не знаю, какая информация по-прежнему отсутствует, скажите, пожалуйста, что еще нужно добавить сюда.

Я хотел, чтобы при регистрации было указано действительное имя пользователя, а не только электронная почта, которая также будет использоваться для входа в систему. Вместо этого я получил сообщение об ошибке.

Помощь будет принята с благодарностью. :)

решено: я не использовал стандартное имя пользователя, предоставленное IdentityFramework, и приложение не смогло заполнить оба реквизита имени пользователя данными, но, поскольку они оба требовались, было невозможно сохранить учетную запись. Поэтому я случайно сделал ненужное второе свойство.

...