Зарегистрируйтесь, используя имя пользователя вместо электронной почты в ASP.NET MVC 5?

Я изменил RegisterViewModelиспользовать Usernameвместо Emailи опустил часть электронной почты при инициализации new ApplicationUserв Registerметоде POST:

       public async Task<ActionResult> Register(RegisterViewModel model)
        {
            if (ModelState.IsValid)
            {
                var user = new ApplicationUser { UserName = model.Username/*, Email = model.Username*/ };
...

Но когда я регистрируюсь по имени пользователя, я получаю ошибку:

Электронная почта не может быть пустой или пустой.

Как я могу это решить, и есть ли способ не допускать идентичные имена пользователей?

1 ответ

  1. вы можете изменить RegisterViewModel на

    public class RegisterViewModel 
    {
        [Remote("IsUserNameExist", "User", "", ErrorMessage = "this username exist", HttpMethod = "POST")]
        public string UserName { set; get; }
        //todo: other fileds......
    
    }
    

    и напишите свой exist validation actionresul в вашем UserController

        [HttpPost]
        [AllowAnonymous]
        [OutputCache(Location = OutputCacheLocation.None, NoStore = true,  Duration = 0, VaryByParam = "*")]
        public virtual JsonResult IsUserNameExist(string userName)
        {
            var check = _userService.CheckUserNameExist(userName);
            return check ? Json(false) : Json(true);
        }