2013-04-22 129 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)’

会话变量现在已创建并显示。