我是 .Net 新手,正在构建一个 Web 应用程序,我想在用户登录或注册并确认注册时创建一个会话。为了登录,我有一个剃刀页面:登录,它只是提示用户输入他们的用户名和密码,这些用户名和密码应该在我的sql服务器中并经过验证。一旦检查到有效用户标志正确,我想创建会话并将用户发送到索引。然后在索引中,我想查看会话是否已创建,并且想读取会话中的值并将其显示到索引视图上,以确认已捕获用户信息。我的 Login.cs 文件如下所示: public ActionResult OnPost(string UserName, string Password) { if (!ModelState.IsValid) { return Page(); } if(accountService.ValidateUserLogin(UserName, Password) == 1) { string Email = accountService.UsernameGetEmail(UserName); HttpContext.Session.SetString(Email, TempData["email"].ToString()); return RedirectToPage("/Index"); } else { //report error to user return Page(); } }这是我尝试在 Index.cs 页面中捕获会话信息的地方:public void OnGet() { if (HttpContext.Session.Id != null) { SessionEmail = HttpContext.Session.GetString("Email"); ViewData["SessionEmail"] = SessionEmail; } }这是我尝试将 SessionEmail 显示到视图上的 html 片段,但在 index.cs 文件内初始化 SessionEmail 时它为空。<div> @{ if( ViewData["SessionEmail"] != null) { <p> Hello! @ViewData["SessionEmail"].ToString() </p> } }</div>希望您能指出我的错误以及我如何尝试建立会话。在我能够设置会话后,我将编辑我的布局的导航栏,以便如果用户是否登录,它就会改变,所以也许您可以指出我如何通过会话来解决这个问题也许会很棒:httpcontext.session.IsAvailable?另外,我的启动中也有 addSession 和 useSession 。
1 回答
湖上湖
TA贡献2003条经验 获得超2个赞
尝试这个:
HttpContext.Session.SetString("Email", Email);
原因是您在此处获取用户的电子邮件地址:
string Email = accountService.UsernameGetEmail(UserName);
然后您尝试使用 SetString
扩展方法将其保存到会话中。该方法将 key
作为第一个参数,将 value
作为第二个参数。
稍后,您将使用“Email”的 调用 GetString
扩展方法:key
SessionEmail = HttpContext.Session.GetString("Email");
因此您需要将 value
设置为相同的 key
:
- 1 回答
- 0 关注
- 77 浏览
添加回答
举报
0/150
提交
取消