我在C#MVC 4中使用Internet應用程序模板,該模板在Visual Studio中爲您生成Account
模型和控制器。這爲我提供了用於登錄的基本表單功能。我在Account
模型中修改了Register
類,除了用戶名和密碼外,還使用了FirstName
,LastName
和Email
。我的用戶信息表是Users
。當用戶提交他們的信息WebSecurity.CreateUserAndAccount(model.UserName, model.Password);
已運行,它將Username
添加到我的用戶表中。所以在這一點上,我有我的PK Id
和Username
在表中。我的User
類定義有一個自定義對象Portfolio
。我想要做的是當用戶註冊他們被添加到表中,然後我找到User
並設置表中其餘數據的值並實例化Portfolio
對象。這將完成我的註冊過程。目前,它將用戶添加到表中,只有Username
將它們添加到角色並重定向回索引。我的var用戶= _db.Users.Find(userId)
顯然沒有找到任何出於某種原因。我甚至試圖作弊和硬編碼userId
,因爲我知道下一個Id
將在Users
表中,它仍然沒有修改表值。 FirstName
,LastName
,Email
全部在表中保留爲空,並且沒有對象爲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");
}
你似乎沒有在任何地方調用'context.SaveChanges'。 –
如果它是一條蛇,它會咬我。我在Seed中做了類似的事情,但是你沒有在那裏做SaveChanges。謝謝你解決它! – user2998266