CodeBehind中的对象有多长时间了?

jpa*_*ugh 2 c# asp.net lifecycle object lifetime

如果我在.aspx页面的代码隐藏中创建一个对象,我可以期待该对象生存多长时间?它会活在后面吗?我可以以某种方式将它传递到另一页吗?比如会话对象,我可以让它直播吗?

我搜索了网络,希望得到一个文档,解释从代码隐藏创建的对象的生命周期,以及如何与这个生命周期进行交互; 任何相关的链接将不胜感激.

顺便说一句,我在代码隐藏中使用C#,但我想大多数针对VB的建议也适用.

Bro*_*ass 5

如果我在.aspx页面的代码隐藏中创建一个对象,我可以期待该对象生存多长时间?它会活在后面吗?我可以以某种方式将它传递到另一页吗?比如会话对象,我可以让它直播吗?

您可以在会话中保存对象实例:

Session["Foo"] = new MyFoo();
Run Code Online (Sandbox Code Playgroud)

您可以在有权访问会话的任何页面上检索实例:

MyFoo foo = (MyFoo) Session["Foo"];
Run Code Online (Sandbox Code Playgroud)

另一种方法是使用static变量 - 在这种情况下,变量保持其值直到应用程序域被销毁(即重新启动IIS时) - 但它也是全局的,因为它对所有用户具有相同的值(因为它根本与会话无关).


Jak*_*ade 5

该对象将仅与页面一样长,即在页面请求的持续时间内.如果您希望延长其使用寿命,可以存储在会话中并为每个请求检索它.