我正在将webapp从框架集布局转换为Masterpage布局。框架集中的每个页面都使用一个公共自定义类来获取登录用户,此自定义类继承自Page。
我认为接口是转换它的正确方法,但我确实错了。存储全局变量或类的最佳和最有效的方法是什么,以便母版页的每个内容页面都可以引用登录的用户类?
答案 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;
}
}
}