您可以在ASP.NET C#Page#Unload方法中将对象分配给会话吗?

您可以在ASP.NET C#Page#Unload方法中将对象分配给会话吗?,c#,asp.net,session,C#,Asp.net,Session,我正在创建一个ASP.NET应用程序(使用C#作为服务器脚本语言),需要使用会话在回发之间保留数据。我使用的是UpdatePanel,会有文本框等的列表,这些列表会在运行中更改。这些列表将是代码隐藏类的全局列表。当页面发回时,我需要保存对这些列表(和其他全局类变量)的更改,因此需要将它们保存到会话。我知道列表存储在内存中,所以实际上不需要存储在会话中,但请忽略这个事实;我只是在测试这个想法:P.在Page\u Unload(objectsender,EventArgs e)方法的代码隐藏中,是否

我正在创建一个ASP.NET应用程序(使用C#作为服务器脚本语言),需要使用会话在回发之间保留数据。我使用的是UpdatePanel,会有文本框等的列表,这些列表会在运行中更改。这些列表将是代码隐藏类的全局列表。当页面发回时,我需要保存对这些列表(和其他全局类变量)的更改,因此需要将它们保存到会话。我知道列表存储在内存中,所以实际上不需要存储在会话中,但请忽略这个事实;我只是在测试这个想法:P.在
Page\u Unload(objectsender,EventArgs e)
方法的代码隐藏中,是否可以将所有内容写入会话,如果可以,这是一种良好的编程实践吗?

根据-

页面完全呈现后引发卸载事件, 发送到客户端,并准备丢弃

因此,我看不出有什么好的理由让您使用它在会话中存储值。保存会话的一个更合适的位置是在处理相关控件(即您所指的文本框)更改的事件中

这也使您的代码方法更加关注它们的职责。例如,如果要在
OnChange
事件中保存特定文本框的值,请将其值保存到该事件中的会话中。当然,另一个选项是在回发时的按钮单击(例如保存)事件中执行所有这些操作。

如果列表是动态的(即您在运行时添加了控件/内容),并且您没有将其存储在会话中,则无法保留列表的状态。如果在回发过程中丢失。