我有一些在母版页上设置的值,我希望在回发中保存。然后,我希望这些变量可以在加载事件期间使用该母版页的页面使用。
足以在母版页上创建属性。所以我的第一次尝试是说在母版页的加载事件期间,如果不是ispostback,则生成值并将它们保存到viewstate,否则从viewstate中读取它们。
除了......显然常规页面加载事件发生在主页加载事件之前,所以当我尝试读取它时数据还没有。
第二次尝试:在Init事件期间设置主页面或检索这些值。没运气。看起来状态未被初始化时间填充。
据我所知,在填充视图状态之后但在主页的加载事件之前,母版页上没有发生任何事件。
我想每个页面都可以有一个InitComplete或PreLoad调用一个函数来填充这些字段,但这看起来很笨拙。呼叫必须在每个页面中。即使该页面从未使用过这些数据,也必须在每个页面中,因为母版页将数据用于自己的目的。
有办法做到这一点吗?也许查看状态不是保存数据的正确位置?我可以将数据存储在Session变量中,但是在非回发时,它们中的数据将从最后一次调用中遗留下来。我想我可以确保清除过时的数据,但这看起来很笨拙。
我在VB写作,但我不认为这会有所作为。
答案 0 :(得分:0)
您可以通过以下方式覆盖母版页的LoadViewState方法:
protected override void LoadViewState(object savedState)
{
base.LoadViewState(savedState);
// use the loaded values, if any, here
}
LoadViewState
在加载之前调用,实际上甚至在页面的PreLoad
之前调用,因此这似乎符合您的要求。