2014-10-10 46 views
1

我正在使用ASP.NET MVC 4模板來創建我的應用程序,在我的方法Register POST,我把一個塊,調用UserProfile並保存新的信息,在這種情況下,它會節省UserTypeMemberShipException在用戶註冊在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 }); 

嘗試,而不是下面的創建用戶時添加的用戶類型,確保用戶類型是您的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,它現在工作正常! – 2014-10-10 13:13:21