2

如果我在 .aspx 页面的代码隐藏中创建一个对象,我可以期望该对象存在多长时间?它会跨越回传吗?我可以以某种方式将它传递到另一个页面吗?我可以让它与会话对象一样长吗?

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

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

4

3 回答 3

5

如果我在 .aspx 页面的代码隐藏中创建一个对象,我可以期望该对象存在多长时间?它会跨越回传吗?我可以以某种方式将它传递到另一个页面吗?我可以让它与会话对象一样长吗?

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

Session["Foo"] = new MyFoo();

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

MyFoo foo = (MyFoo) Session["Foo"];

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

于 2011-04-28T02:14:59.453 回答
5

该对象只会与页面一样长,即页面请求的持续时间。如果您想让它的寿命更长,您可以存储在 Session 中并为每个请求检索它。

于 2011-04-28T02:15:05.057 回答
3

代码隐藏在请求期间存在。它不会跨越回传。如果您希望在回发中添加值,则可以向 Session 添加值。这同样适用于 VB。

于 2011-04-28T02:16:14.247 回答