2013-11-09 34 views
0

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

+0

如果我没有记错的话,静态类由您的应用程序的所有实例/会话共享。因此,使用静态类可能不是一个用户名的好主意,因为它完全可以看到一个用户的名字出现在另一个用户的屏幕上的情况... –

+0

@ ajax81谢谢。我没有意识到静态类将值存储在服务器上。 – Hidalgo

回答

0

如果您使用的母版页在那家商店,在隐藏的价值信息,因此您可以在任何页面,您使用的是母版页访问创建一个隐藏字段。

+0

我确实使用母版页。而且我会就谷歌如何创建一个隐藏领域。谢谢。 – Hidalgo

+0

http://msdn.microsoft.com/en-us/library/ms227988.ASPX –

+0

你可以投票,如果这是你想要的答案:) –

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 
... 
+0

非常感谢您的示例代码。我会看看如何在我的情况下应用它。 – Hidalgo