2013-01-10 118 views
0

我在页面中使用C#代码,我希望用户登录该页面。此时,假设登录信息可以通过数据库进行验证,我在整个会话中设置要跟踪的会话变量。我不会在任何地方初始化会话,但通过设置会话变量,反正会发生这种情况。我的代码没有任何错误,但我不确定我是否正确执行此操作。登录后正确初始化会话

代码隐藏的页面直接登录成功后:

Business.User user  = new Business.User(); 

user.SetLabelCompanyId(); 
user.SetLabelUsername(); 

_labelUsername.Text  = user.GetLabelUsername(); 
_labelCompanyId.Text = MySession.Current.CompanyId; 

我打电话_labelUsername.Text的方式是什么,我打算做的,但我打电话_labelCompanyId的方式是什么,我觉得会是混乱的人不熟悉的与我的项目。它实现了创建会话的目标,但与用户名称不同,尽管以相同的方式使用。我宁愿做的是:

_labelUsername.Text  = user.GetLabelUsername(); 
_labelCompanyId.Text = user.GetLabelCompanyId(); 

然后在什么地方,这些代码初始化MySession。我怎样才能做到这一点?当我使用上述2行(没有其他提及MySession)时,出现会话为空并重定向到登录页面的错误。

+0

查看[ASP.NET会话状态](http://msdn.microsoft.com/zh-cn/library/ms972429.aspx) –

回答

0

会话将在用户第一次打开该网站时进行初始化。但是在这个时候,你的会话变量没有被初始化。你需要像这样的东西

//inside in your Business.User class (set reference to System.Web) 
public string GetLabelCompanyId() 
{ 
    string returnValue = String.Empty; 
    HttpContext context = HttpContext.Current; 
    if(context != null) 
    { 
    if(context.Session["CompanyId"] != null) 
    { 
     returnValue = context.Session["CompanyId"]; 
    } 
    } 

    return returnValue; 
} 

成功登录后,您可以将值存储到会话变量。

我非常推荐使用分离的类来访问HttpContext,而不是直接在您的Business Class中。