ASP.NET控件生命周期 - 加载视图状态后

时间:2010-08-17 15:41:05

标签: asp.net vb.net custom-controls

我正在创建一个自定义控件,我需要处理一些逻辑 AFTER LoadViewState(可能会或可能不会被称为,具体取决于控件是否可见< / strong>)和之前 LoadPostBack(可能会或可能不会被称为,具体取决于控件是否可见)。

控制生命周期中是否有任何内容可以适应这种情况?

我需要这个,因为如果视图状态 WAS NOT 已加载,我想进行一些处理。我不想在init中执行它,因为我会在那里执行它,然后可能必须在加载视图状态时再次执行它。

所以我需要能够在未加载视图状态时运行代码(也就是当没有调用LoadViewState时)并且在控件的生命周期中同时放置(在{之后) {1}},Init之前)

2 个答案:

答案 0 :(得分:0)

在LoadViewState之前触发Init,在LoadViewState之后触发Load。我不知道Load在LoadPostBack之前被激活了...默认情况下,LoadViewState在初始页面加载时没有调用,但是在其他所有时间调用...所以我假设你有自定义viewstate处理这个控件和我正在做一些特别的事您可以做的另一件事是,在LoadViewState方法运行之后,放置一个自定义事件并在LoadVIewState例程结束时触发此事件......

答案 1 :(得分:0)

每次回发都不会调用

LoadViewState,但LoadControlState是。Page.RegisterRequiresControlState(Me)。在Init:

Protected Overrides Sub LoadControlState(ByVal savedState As Object) ' Always called as long as I save something to controls state Dim p As Pair = savedState MyBase.LoadControlState(p.First) If Not CType(p.second, Boolean) Then ' I store whether or not the control was rendered last request End If End Sub Protected Overrides Function SaveControlState() As Object Return New Pair(MyBase.SaveControlState(), Visible) End Function

然后我实施了:

LoadControlState

因此,每次回发都会调用{{1}},我可以相应地处理我的处理