Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 在所有页面上全局存储值_Asp.net - Fatal编程技术网

Asp.net 在所有页面上全局存储值

Asp.net 在所有页面上全局存储值,asp.net,Asp.net,这是一个ASP.NET表单项目。当用户输入他/她的用户名和密码(在登录页面中)时,我希望保存用户名,以便可以在项目的任何页面的代码中检索该用户名。我知道我可以通过会话变量来完成此操作。 但是,是否可以使用Get Set创建一个静态公共类,并在其中存储值,然后使用该类检索该值?如果您使用母版页,请在该母版页中创建一个隐藏字段,将该信息存储在该隐藏值中,以便您可以在使用该母版页的任何页面中访问。静态类在所有用户之间共享应用程序中的实例/会话,这意味着您可能会得到类似于比赛条件的结果;例如,来自用户_

这是一个ASP.NET表单项目。当用户输入他/她的用户名和密码(在登录页面中)时,我希望保存用户名,以便可以在项目的任何页面的代码中检索该用户名。我知道我可以通过会话变量来完成此操作。

但是,是否可以使用Get Set创建一个静态公共类,并在其中存储值,然后使用该类检索该值?

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

静态类在所有用户之间共享应用程序中的实例/会话,这意味着您可能会得到类似于比赛条件的结果;例如,来自用户_a的请求可以读取用户_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
...

如果我没有弄错的话,静态类由应用程序的所有实例/会话共享。因此,对于用户名来说,使用静态类可能不是一个好主意,因为看到一个用户名出现在另一个用户的屏幕上是完全合理的…@ajax81谢谢。我没有意识到静态类在服务器上存储值。我使用母版页。我将在谷歌上搜索如何创建隐藏字段。谢谢你,穆罕默德,谢谢你的帮助和链接。一旦我审查了所有的选项,我就会投票。这根本就没有帮助。解释OPs场景以及隐藏字段需要母版页的方式和原因…非常感谢您提供的示例代码。我将看看如何在我的案例中应用它。“静态类在应用程序中的实例/会话之间共享”,这只有在使用一台服务器时才是正确的。@Jacob你是对的,但是op打算将用户特定的数据存储在静态变量中,这意味着如果数据不存储在键控集合中,用户之间仍然会发生冲突。此外,可部署体系结构的前景是变化多端的,我认为我们都同意,有比服务器上所有用户共享的静态变量更好的方法来存储会话状态。