-4

在我的 C# 代码隐藏文件 (.cs) 中,我只有一个类,它派生自 System.Web.UI.Page。该类包含字典数组。在其中一次单击按钮时,即在按钮单击事件处理函数中,我创建了此类的对象并执行了一些操作。现在,在另一个按钮单击时,我需要执行其他操作,这些数据需要属于在上一次单击按钮时创建的类的对象或实例的数据。我怎样才能做到这一点?我需要所有数据,尤其是属于该对象/类实例的字典数组。

4

2 回答 2

3

HTTP 是无状态的。所以没有直接的方法可以做到这一点。

您可以做的是将其保存在某种存储机制中并稍后访问它。您可以考虑 DBtableSession...

这是一个存储在的示例Session

 YourClass object1=new YourClass();
 object1.SomeProperty="HTTP is stateless"; 
 Session["ThatObject"]=object1;

您可以像这样在下一个按钮单击事件中访问它

 if(Session["ThatObject"]!=null)
 {
   YourClass object1=(YourClass) Session["ThatObject"];
   //now you can access object1 properties here.
 }

在会话中存储这么多项目不是一个好主意,因为它会使您的服务器哭泣,因为会话存储在服务器中。

于 2012-06-19T03:31:10.427 回答
1

您可以使用静态声明,以便它在请求中保持不变。

static IDictionary<string,object> myPersistentDict;

当然,您必须担心这种方法的线程安全性。如果您使用的是 .NET 4,则有一个内置的字典类可以为您处理这个问题,ConcurrentDictionary

static ConcurrentDictionary<string, object> myPersistentDict;
于 2012-06-19T03:30:15.777 回答