以下是我的设置的基础知识:
我有一个继承自 System.Web.UI.Page 的 BasePage 类。BasePage 实现了两个属性,以便它们的 get/set 从 ViewState 集合中的两个不同项目(例如来自 BasePage 的 this.ViewState["Year"])中执行。
我有另一个类,然后从 BasePage 继承,我们称之为 SpecificBasePage。
最后,我有一个继承SpecificBasePage 的aspx 页面。
我已经添加了断点并在我的代码中做了很多单步调试,发现在初始页面加载时,我的两个视图状态属性都被分配了值,并且这些值在第一个页面加载生命周期中持续存在。
但是,当页面回发时,在 Page_Load 事件和其他事件处理程序期间(应加载 ViewState 时),这两个属性都返回 null。检查 this.ViewState.Count 显示集合中有零个对象。
谁能想到我在某处可能会影响 ViewState 并导致这种行为的事情?
--另外我已经把它隔离到我的一部分代码中。在初始加载时,我在 OnInit 中给出了 viewstate 属性值,我发现当我将其移至 OnLoad 时,这些值在回帖中仍然存在。我猜即使添加的视图状态值在整个初始页面生命周期中都存在,但它们在回发中被放弃了?