我正在将 web 应用程序从框架集布局转换为母版页布局。框架集中的每个页面都使用一个通用的自定义类来获取登录用户,这个自定义类继承自 Page。
我认为接口将是转换它的正确方法,但我真的错了。存储全局变量或类以便 Masterpage 的每个内容页面都可以引用登录的用户类的最佳和最有效的方法是什么?
我正在将 web 应用程序从框架集布局转换为母版页布局。框架集中的每个页面都使用一个通用的自定义类来获取登录用户,这个自定义类继承自 Page。
我认为接口将是转换它的正确方法,但我真的错了。存储全局变量或类以便 Masterpage 的每个内容页面都可以引用登录的用户类的最佳和最有效的方法是什么?
使其成为一个简单的静态类,使用静态方法返回登录的用户类,无需将此代码与 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;
}
}
}