2014-10-10 3 views
1

Я использую шаблон ASP.NET MVC 4 для создания своего приложения в моем методе Register POST, я помещаю блок, который вызывает и сохраняет новую информацию в этом случае , он сэкономит UserType.MemberShipException во время регистрации пользователя в ASP.NET

Проблема заключается в том: Каждый раз, когда я спасу пользователю, исключение MembershipCreateUserException называется следующее сообщение отображается на странице: User name already exists. Please enter a different user name. Пользователь сохраняется в базе данных.

Это мой метод Регистрация:

public ActionResult Register(RegisterModel model) 
     { 
      if (ModelState.IsValid) 
      { 
       // Attempt to register the user 

       try 
       { 

        // var user = new UserProfile() { UserName = model.UserName }; 

        WebSecurity.CreateUserAndAccount(model.UserName, model.Password); 
        WebSecurity.Login(model.UserName, model.Password); 
        return RedirectToAction("Index", "Home"); 

       } 
       catch (MembershipCreateUserException e) 

       { 
        ModelState.AddModelError("", ErrorCodeToString(e.StatusCode)); 
       } 
//new code 
       using (UsersContext db = new UsersContext()) 
       { 

        // Insert name into the profile table 
        UserProfile newUser = db.UserProfiles.Add(new UserProfile { UserName = model.UserName, UserType = model.UserType }); 
        db.SaveChanges(); 

       } 
      } 

Любой знает, как я могу решить это? Всякая помощь будет действительна! Спасибо, парни.

ответ

0

Следующая строка добавляет новый пользователь:

WebSecurity.CreateUserAndAccount(model.UserName, model.Password); 

И эта линия делает это снова:

UserProfile newUser = db.UserProfiles.Add(new UserProfile { UserName = model.UserName, UserType = model.UserType }); 

Попробуйте вместо следующего, чтобы добавить тип пользователя при создании пользователя, убедитесь, что UserType является частью вашей модели RegisterModel:

WebSecurity.CreateUserAndAccount(model.UserName, model.Password, new { UserType = model.UserType}); 

Таким образом, весь метод регистрации будет выглядеть e это:

public ActionResult Register(RegisterModel model) 
     { 
      if (ModelState.IsValid) 
      { 
       // Attempt to register the user 

       try 
       { 
        WebSecurity.CreateUserAndAccount(model.UserName, model.Password, new { UserType = model.UserType }); 

        return RedirectToAction("Index", "Home"); 

       } 
       catch (MembershipCreateUserException e) 
       { 
        ModelState.AddModelError("", ErrorCodeToString(e.StatusCode)); 
       } 
      } 
+1

Спасибо @Ricardo, он отлично работает прямо сейчас! –

Смежные вопросы