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