ASP.Net MasterPage的全局变量

时间:2012-05-20 19:50:38

标签: asp.net global-variables master-pages

我正在将webapp从框架集布局转换为Masterpage布局。框架集中的每个页面都使用一个公共自定义类来获取登录用户,此自定义类继承自Page。

我认为接口是转换它的正确方法,但我确实错了。存储全局变量或类的最佳和最有效的方法是什么,以便母版页的每个内容页面都可以引用登录的用户类?

1 个答案:

答案 0 :(得分:1)

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

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;
    }
  }

}