如何在注册模型C#ASP.NET MVC 4中自动生成对象?
我在C#MVC4中使用Internet应用程序模板,它在Visual Studio中为您生成如何在注册模型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
帐户
模型和控制器。这为我提供了登录的基本表单功能。我修改了Account
模型中的Register
类,除了用户名和密码之外,还采用了FirstName
、LastName
和Email
。我的用户信息表是Users
。当用户提交其信息时WebSecurity.CreateUserAndAccount(model.UserName,model.Password)代码>
运行并将用户名
添加到“我的用户”表中。因此,此时我的PKId
和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
。谢谢您修复了它!标记为您的答案。非常感谢!