我正在创建一个自定义控件,我需要处理一些逻辑 AFTER LoadViewState
(可能会或可能不会被称为,具体取决于控件是否可见< / strong>)和之前 LoadPostBack
(可能会或可能不会被称为,具体取决于控件是否可见)。
控制生命周期中是否有任何内容可以适应这种情况?
我需要这个,因为如果视图状态 WAS NOT 已加载,我想进行一些处理。我不想在init中执行它,因为我会在那里执行它,然后可能必须在加载视图状态时再次执行它。
所以我需要能够在未加载视图状态时运行代码(也就是当没有调用LoadViewState时)并且在控件的生命周期中同时放置(在{之后) {1}},Init
之前)
答案 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}},我可以相应地处理我的处理