Настройка API простого членства

Я настроил API простого членства ASP.NET и отключил вызов веб-безопасности от контроллера учетных записей к моему классу User. Вот действие контроллера

[HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Create(User user)
    {
        if (ModelState.IsValid)
        {
           try
            {
                WebSecurity.CreateUserAndAccount(user.UserName, user.Password, 
                    new{FirstName = user.FirstName, 
                        LastName= user.LastName, 
                        DateOfBirth= user.DateOfBirth, 
                        IsMale = user.IsMale, 
                        IsClient = user.IsClient,
                        Email = user.Email});

                WebSecurity.Login(user.UserName, user.Password);
                return RedirectToAction("Landing", "User");
            }
            catch (MembershipCreateUserException e)
            {
                ModelState.AddModelError("", ErrorCodeToString(e.StatusCode));
            }

           db.Users.Add(user);
           db.SaveChanges();

        }

        ViewBag.NationalityId = new SelectList(db.Nationalities, "NationalityId", "NationalityName", user.NationalityId);
        ViewBag.UserId = new SelectList(db.UserCardDetails, "UserCardDetailId", "CreditCardNumber", user.UserId);
        return View(user);
    }

Вот мой класс пользователя

public class User
    {
        public int UserId { get; set; }

        public int? NationalityId { get; set; }

        [StringLength(100)]
        public string UserName { get; set; }


        [Display(Name = "First Name")]
        [StringLength(100)]
        public string FirstName { get; set; }


        [Display(Name = "Last Name")]
        [StringLength(100)]
        public string LastName { get; set; }

        [EmailAddress]
        [StringLength(256)]
        [Display(Name = "Email ID")]
        public string Email { get; set; }

        [Display(Name = "Gender")]
        public bool? IsMale { get; set; }

        [Display(Name="Are you a designer or a client?")]
        public bool? IsClient { get; set; }


        [Display(Name = "Nationality")]
        [ForeignKey("NationalityId")]
        public virtual Nationality Nationality { get; set; }


        [Display(Name = "Date Of Birth")]
        public DateTime? DateOfBirth { 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; }



        public virtual ICollection<Project> Projects { get; set; }

        public virtual ICollection<Role> Roles { get; set; }

        public virtual UserCardDetail UserCardDetail { get; set; }


        public User()
        {
            this.Roles = new List<Role>();
            this.Projects = new List<Project>();
            this.IsMale = true;
            this.IsClient = true;
        }

    }

Когда я пытаюсь опубликовать данные через форму, я получаю исключение, в котором говорится, что пароль не может быть нулевым. Однако я ввожу пароль.


person Community    schedule 29.12.2013    source источник
comment
Установлен ли ваш пароль на user.Password, если вы отлаживаете свое действие? Я имею в виду, какое значение вы придаете методу WebSecurity.CreateUserAndAccount ()? Пароль, который вы ввели в форму?   -  person Kevin Brechbühl    schedule 29.12.2013
comment
Это ошибка, которую я получаю. Не могу вставить значение NULL в столбец «Пароль», таблицу «Recrea8-Db.dbo.Users»; столбец не допускает значений NULL. INSERT не работает.   -  person    schedule 29.12.2013
comment
Итак, кажется, что ваш user.Password равен NULL и что ваше представление / привязка в представлении неверно. Не могли бы вы вставить код своего представления?   -  person Kevin Brechbühl    schedule 29.12.2013


Ответы (1)


Думаю, я только что нашел исправление, я добавил дополнительный пароль свойства = user.Password, и это сработало.

person Community    schedule 30.12.2013