如何在注册模型C#ASP.NET MVC 4中自动生成对象?

如何在注册模型C#ASP.NET MVC 4中自动生成对象?,c#,asp.net,asp.net-mvc,linq,entity-framework,C#,Asp.net,Asp.net Mvc,Linq,Entity Framework,我在C#MVC4中使用Internet应用程序模板,它在Visual Studio中为您生成帐户模型和控制器。这为我提供了登录的基本表单功能。我修改了Account模型中的Register类,除了用户名和密码之外,还采用了FirstName、LastName和Email。我的用户信息表是Users。当用户提交其信息时WebSecurity.CreateUserAndAccount(model.UserName,model.Password) 运行并将用户名添加到“我的用户”表中。因此,此时我的P

我在C#MVC4中使用Internet应用程序模板,它在Visual Studio中为您生成
帐户
模型和控制器。这为我提供了登录的基本表单功能。我修改了
Account
模型中的
Register
类,除了用户名和密码之外,还采用了
FirstName
LastName
Email
。我的用户信息表是
Users
。当用户提交其信息时
WebSecurity.CreateUserAndAccount(model.UserName,model.Password)
运行并将
用户名
添加到“我的用户”表中。因此,此时我的PK
Id
Username
都在表中。我的
用户
类定义有一个自定义对象
公文包
。我试图做的是,当用户注册时,他们被添加到表中,然后我找到
user
,设置表中其余数据的值,并实例化
Portfolio
对象。这将完成我的注册过程。目前,它只使用
用户名将用户添加到表中
将他们添加到角色并重定向回索引。我的var user=
\u db.Users.Find(userId)
由于某种原因显然找不到任何东西。我甚至试图欺骗并硬编码
userId
,因为我知道
Users
表中下一个
Id
是什么,但它仍然没有修改表值
FirstName
LastName
Email
在表中都保持为空,并且没有为
公文包
实例化对象。我有我的背景,所以它应该工作。我在我的
Seed
方法中做了类似的事情,效果很好。我不知道为什么它在这里不起作用。有人有什么建议吗?多谢各位

    [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");
            }
[HttpPost]
[异名]
[ValidateAntiForgeryToken]
公共操作结果寄存器(RegisterModel模型,TeamProject.Models.ProjectDb2上下文)
{
if(ModelState.IsValid)
{
//尝试注册用户
尝试
{
WebSecurity.CreateUserAndAccount(model.UserName、model.Password);
var userId=\u 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=newportfolio
{
股票=新名单
{
}
};
context.Users.AddOrUpdate(用户);
System.Web.Security.Roles.AddUserToRole(model.UserName,“Users”);
WebSecurity.Login(model.UserName、model.Password);
返回重定向到操作(“索引”、“主页”);
}

根据上述注释:


您似乎没有在任何地方调用context.SaveChanges


您似乎没有在任何地方调用
context.SaveChanges
。如果它是蛇,它会咬我。我在Seed()中做了类似的操作,但您不必在那里执行
SaveChanges
。谢谢您修复了它!标记为您的答案。非常感谢!