由于我没有编程太久,我将首先写下我的假设,因为我的理论可能不太正确。
假设:
- 遵循引用类型背后的简单逻辑,如果我有一个名为 A 的类“Class1”的实例,并创建一个 Class1 类型的新变量:Class1 newInstance = A,则 A 类属性的每次更改都应反映在“newInstance”属性中类是引用类型(与值类型相反,例如在结构中)。
- 在 asp 中,每个页面都是 Page 类型的类的一个新实例,否则每个客户端都会看到并在同一个页面上操作,目标是将它们分开。页面的每个组件(如 textBox 或 gridView)都属于一个特定的实例。
如果这些是错误的,请纠正我。
问题:
由于我被迫使用页面方法从客户端(javascript)获取一些数据,我别无选择,只能使用静态方法。我想要实现的是能够将页面实例或至少某种引用存储在会话变量中,以便稍后我可以返回它并获取或设置所需页面实例中特定控件的值. 所以我所做的是:我将当前实例(this)存储在会话变量中。这仅在 PageLoad 上分配一次 (!isPostback)。遵循引用类型的逻辑,页面实例的每一次变化都应该反映在会话变量中,但不知何故不是。如果某些控件的值发生变化,我可以很容易地看到它们反映在 postBack 上的页面实例中(应该如此),但是我的会话变量的内容没有被改变。它的行为就好像它是一个结构。当我尝试将实例存储在静态类变量中时也会发生同样的情况(尽管即使它有效,这也不是一个解决方案,因为它是一个多用户 Web 应用程序)。
任何人都可以向我解释发生了什么,并纠正我的想法,如果它是错误的。