2013-11-24 27 views
0

我在C#MVC 4中使用Internet應用程序模板,該模板在Visual Studio中爲您生成Account模型和控制器。這爲我提供了用於登錄的基本表單功能。我在Account模型中修改了Register類,除了用戶名和密碼外,還使用了FirstNameLastNameEmail。我的用戶信息表是Users。當用戶提交他們的信息WebSecurity.CreateUserAndAccount(model.UserName, model.Password); 已運行,它將Username添加到我的用戶表中。所以在這一點上,我有我的PK IdUsername在表中。我的User類定義有一個自定義對象Portfolio。我想要做的是當用戶註冊他們被添加到表中,然後我找到User並設置表中其餘數據的值並實例化Portfolio對象。這將完成我的註冊過程。目前,它將用戶添加到表中,只有Username將它們添加到角色並重定向回索引。我的var用戶= _db.Users.Find(userId)顯然沒有找到任何出於某種原因。我甚至試圖作弊和硬編碼userId,因爲我知道下一個Id將在Users表中,它仍然沒有修改表值。 FirstNameLastNameEmail全部在表中保留爲空,並且沒有對象爲Portfolio實例化。我有我的背景,所以它應該工作。我在Seed方法中做了類似的工作,它工作正常。我不確定它爲什麼不在這裏工作。有沒有人有建議?謝謝。如何在註冊模型C#ASP.NET MVC 4中自動生成對象?

[HttpPost] 
    [AllowAnonymous] 
    [ValidateAntiForgeryToken] 
    public ActionResult Register(RegisterModel model, TeamProject.Models.ProjectDb2 context) 
    { 
     if (ModelState.IsValid) 
     { 
      // Attempt to register the user 
      try 
      { 
       WebSecurity.CreateUserAndAccount(model.UserName, model.Password); 

       var userId = _db.Users 
          .Where(u => u.UserName == model.UserName) 
          .Select(u => u.Id).First(); 
       var user = _db.Users.Find(userId); 
       user.FirstName = model.FirstName; 
       user.LastName = model.LastName; 
       user.Email = model.Email; 
       user.Portfolio = new Portfolio 
       { 
        Stocks = new List<Stock> 
        { 
        } 
       }; 
       context.Users.AddOrUpdate(user); 

       System.Web.Security.Roles.AddUserToRole(model.UserName, "Users"); 
       WebSecurity.Login(model.UserName, model.Password); 
       return RedirectToAction("Index", "Home"); 
      } 
+0

你似乎沒有在任何地方調用'context.SaveChanges'。 –

+0

如果它是一條蛇,它會咬我。我在Seed中做了類似的事情,但是你沒有在那裏做SaveChanges。謝謝你解決它! – user2998266

回答

0

按照上述評論:

您不會出現在任何地方打電話context.SaveChanges。

+0

標記爲您的答案。欣賞它! – user2998266

相關問題