2013-04-22 98 views
1

我有兩個控制器,LoginAccount控制器。登錄驗證之後我已經將值設置爲Session["username"]和重定向使用Response.Redirect("../Account")Account控制器的索引頁。我需要在Account控制器的index頁面上訪問Session["Username"]的值。我在視圖上使用了@Session["Username"],但沒有顯示值。ASP.NET MVC3會話變量不可訪問

是否重新定向原因處置會話變量?

public void LoginVerify(UserModel usermodel) 
    { 

     var dbContext = new db_restproEntities(); //class derived from DbContext 
     var usernames = from username in dbContext.tbl_login select username; //read data 

     List<tbl_login> users = dbContext.tbl_login.ToList(); 
     bool active = false; 
     foreach (var x in users) 
     { 
      if (x.username == usermodel.username && x.password == usermodel.password) 
      { 
       if (x.active == true) 
       { 
        active = true; 
        Session["Message"] = ""; 
        Session["session_username"] = x.username; 
        Session["status"] = "TRUE"; 
        Session["userid"] = x.user_id; 
        Response.Redirect("../" + x.role); 

       } 


      } 

     } 
     Session["Message"] = "Invalid Login Details"; 
     Response.Redirect("../Login"); 
    } 
+0

試試這個 http://stackoverflow.com/questions/4381189/accessing-a-session-object-from-razor-layout-cshml – TGH 2013-04-22 04:37:23

+0

@Ayush。它能爲您提供幫助嗎? – PSL 2013-04-22 04:43:08

+0

我懷疑你的登錄邏輯沒有正確設置上下文。如果您可以在重定向的地方發佈您的登錄方法代碼,我們將能夠爲您提供幫助 – 2013-04-23 07:55:17

回答

0

使用下面的代碼顯示

<span> 
    @HttpContext.Current.Session["username"].ToString() 
</span> 
-1

是否會話變量的重新定向原因處置?

0

按這裏這個程序我的經驗,重定向導致此問題。

我改變登錄的返回類型從空隙驗證方法動作結果 和「與返回RedirectoAction(../"+ x.role(索引‘x.role)

取代的Response.Redirect)’

會話變量現在已創建並顯示。