在所有页面上全局存储值

时间:2013-11-09 17:16:40

标签: asp.net

这是一个ASP.NET Forms项目。当用户输入他/她的用户名和密码时(在登录页面中)我想保存用户名,以便可以在项目的任何页面的代码中检索它。我知道我可以通过会话变量来做到这一点 但是是否可以使用Get Set创建一个Static Public类并将值存储在那里并使用此类检索它?

2 个答案:

答案 0 :(得分:0)

如果您正在使用母版页,请在该商店中创建隐藏字段中的隐藏字段,以便您可以在使用该母版页的任何页面中访问该页面。

答案 1 :(得分:0)

静态类在您的应用中的实例/会话之间共享,这意味着您可能最终得到类似于竞争条件的内容;例如,User_A的请求可以读取User_B在静态类中设置的值。 (见SO answer

从臀部拍摄,为用户的信息编写包装/抽象类可能更容易,这样可以更轻松地访问其详细信息。类似的东西:

public class UserDetails{

   public string Name;
   public string Age;
   public string Gender;

   public UserDetails(HttpContext context){
      this.Name   = context.User.Identity.Name;
      this.Age    = ...;
      this.Gender = ...;

      // Alternatively, you could perform your own data access to
      // get/set these details. It depends on how you're storing your
      // users' info.
   }
}

然后在你的代码中......

UserDetails userDetails = new UserDetails(context.Current);
Response.Write(userDetails.Name); // user's name
Response.Write(userDetails.Age); // user's age
...