回发后如何保留变量值

时间:2014-04-04 06:48:09

标签: c# asp.net

我使用静态变量来保存照片名称和标志名称,我通过查询字符串将这些名称传递到一个页面到另一个页面这些工作正常我在本地系统中运行但是当我从服务器系统运行它并访问通过多个客户端系统,当从一个页面重定向到另一个页面时,所有客户端系统的照片名称和标志名称都相同。

当我创建一个简单的变量(不是静态的)时,它会在回页后丢失它的值。

请给我解决方案,我该如何解决呢

2 个答案:

答案 0 :(得分:3)

您需要使用Session而不是静态变量。会话对于用户是唯一的,而静态变量在所有对象之间共享。

  

ASP.NET会话状态使您可以存储和检索a的值   用户作为用户在Web应用程序中导航ASP.NET页面。 HTTP是   无国籍协议。这意味着Web服务器会处理每个HTTP   请求页面作为独立请求。服务器保留没有   了解在先前请求期间使用的变量值。   ASP.NET会话状态在此期间识别来自同一浏览器的请求   作为会话的有限时间窗口,并提供一种持久的方式   该会话期间的变量值。

作为补充而不是如果多个线程正在访问静态成员,则必须考虑它们的线程安全性。本文解释了static members thread safety

答案 1 :(得分:1)

在ASP.NET中,静态变量在所有用户之间共享,因为它们由w3wp-Process中的相同AppDomain提供服务。在开发计算机上调试应用程序时,您是唯一的用户,因此您不会观察到相同的行为。

不使用静态变量,而是将值存储在会话内存中,例如:

Session["MySessionKey"] = variableValueThatYouWantToPreserve;

您可以稍后通过读取会话内存来检索该值,例如:

var preservedValue = (PreservedValueType) Session["MySessionKey"];

有关如何使用会话内存的详细信息,请参阅此link

如果在访问新页面时在Request参数中传输值并且只需要在页面级别保留它,则还可以使用ViewState来保留PostBack与页面之间的值。