asp.net主页面和viewstate

时间:2017-02-16 22:18:37

标签: asp.net viewstate

我有一些在母版页上设置的值,我希望在回发中保存。然后,我希望这些变量可以在加载事件期间使用该母版页的页面使用。

足以在母版页上创建属性。所以我的第一次尝试是说在母版页的加载事件期间,如果不是ispostback,则生成值并将它们保存到viewstate,否则从viewstate中读取它们。

除了......显然常规页面加载事件发生在主页加载事件之前,所以当我尝试读取它时数据还没有。

第二次尝试:在Init事件期间设置主页面或检索这些值。没运气。看起来状态未被初始化时间填充。

据我所知,在填充视图状态之后但在主页的加载事件之前,母版页上没有发生任何事件。

我想每个页面都可以有一个InitComplete或PreLoad调用一个函数来填充这些字段,但这看起来很笨拙。呼叫必须在每个页面中。即使该页面从未使用过这些数据,也必须在每个页面中,因为母版页将数据用于自己的目的。

有办法做到这一点吗?也许查看状态不是保存数据的正确位置?我可以将数据存储在Session变量中,但是在非回发时,它们中的数据将从最后一次调用中遗留下来。我想我可以确保清除过时的数据,但这看起来很笨拙。

我在VB写作,但我不认为这会有所作为。

1 个答案:

答案 0 :(得分:0)

您可以通过以下方式覆盖母版页的LoadViewState方法:

protected override void LoadViewState(object savedState)
{
     base.LoadViewState(savedState);

     // use the loaded values, if any, here
}

LoadViewState在加载之前调用,实际上甚至在页面的PreLoad之前调用,因此这似乎符合您的要求。