2012-05-20 81 views
2

我将一个webapp从一个框架布局转换为Masterpage布局。框架集中的每个页面都使用通用的自定义类来获取登录的用户,该自定义类继承自Page。ASP.Net MasterPage的全局变量

我认为一个接口将是正确的方式来转换,但我真的错了。什么是存储全局变量或类的最好和最有效的方法,以便Masterpage的每个内容页面都可以引用已登录的用户类?

+1

这是为asp.net? –

+0

是的,对不起,我忘了把这些信息放在 – mattgcon

+0

放到会话缓存中。会话缓存持续只要用户登录。 –

回答

1

使其成为一个静态方法的简单静态类,它将返回记录的用户类,不需要将此代码与ASP.NET页面绑定。如果获取登录用户需要一些时间昂贵的操作(例如数据库查询)将会话记录的用户类实例存储在会话中。这样的事情:

public static class Users 
{ 

    public static User GetLoggedUser() 
    { 
    if (HttpContext.Current.Session["LoggedUser"] != null) 
    { 
     return (User)HttpContext.Current.Session["LoggedUser"]; 
    } 
    else 
    { 
     User usr = GetLoggedUserSomehow(); // here goes your current code to get user 
     HttpContext.Current.Session["LoggedUser"] = usr; 
     return usr; 
    } 
    } 

}