我是一名新的ASP MVC学习者,我正在研究小件并陷入困境。方案是用户正在创建新帐户,其中accountID由SQL自动创建。我想将此ID传递给下一步,让用户输入名称和地址。如何为此方案传递此ID或任何解决方案?考虑通过TempData或Session传递数据,但我不确定。
答案 0 :(得分:0)
TempData
会将数据保存到您后续请求的结尾。
还有ViewBag
/ ViewData
,它们实际上是相同的字典,持续时间较短,只能持续到当前请求结束。
Session
只要用户的会话打开就会持续。
如果“下一步”意味着将数据传递到后续视图,我认为TempData
适合您的帐单,但如果您需要更耐用的数据,Session
是可行的方法。
答案 1 :(得分:0)
只需使用您用于登录表单的相同流程即可。如果用户已经输入数据库,您可以将它们视为尚未完全填充的配置文件的登录用户。
在ASP.NET MVC中,在很多情况下,可以通过将Forms Authentication cookie设置为新注册的用户名来解决这个问题
FormsAuthentication.SetAuthCookie(newUser.Logon, false);
我认为在TempData
或Session
中存储用户ID是错误的。出于所有正常目的,在将记录插入用户数据库后,刚刚注册到您网站的用户可被视为已登录。
答案 2 :(得分:0)
我认为你正在接近这个错误。您应该让用户先填写所有信息,然后进行所有注册,包括创建用户并在最后存储各步骤中的数据。
如果按照建议的方式进行操作,最终会有部分注册用户。他们将创建一个帐户,然后关闭他们的浏览器,永远不会完成其余的。您现在必须编写额外的代码以在每次登录时检查所有这些。
最好让您的注册过程一次完成所有这些过程。
答案 3 :(得分:0)
你可以尝试这种方式 - 创建用户(用户名和密码将是表单中的值):
WebSecurity.CreateUserAndAccount(username, password);
然后这样做:
int userID = 0;
userID = WebSecurity.GetUserId(username);
希望有所帮助。