我是 .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 關注
- 154 瀏覽
添加回答
舉報
0/150
提交
取消