0

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

4

2 回答 2

0

如果您正在使用母版页,则在该隐藏值中创建一个隐藏字段,将该信息存储在该隐藏值中,以便您可以在使用该母版页的任何页面中访问。

于 2013-11-09T17:27:36.987 回答
0

静态类在您的应用程序中的实例/会话之间共享,这意味着您最终可能会遇到类似于竞争条件的东西;例如,来自 User_A 的请求可以读取 User_B 在静态类中设置的值。(见这个答案

从臀部开始,为用户的信息编写包装器/抽象类可能更容易,从而更容易访问他们的详细信息。就像是:

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
...
于 2013-11-09T17:37:31.427 回答