代码之家  ›  专栏  ›  技术社区  ›  Bob Fincheimer

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

  •  1
  • Bob Fincheimer  · 技术社区  · 15 年前

    我正在创建一个自定义控件,我需要处理一些逻辑 之后 LoadViewState (可称为或不称为 取决于控件是否可见 之前 LoadPostBack 取决于控件是否可见 ).

    在控制生命周期中,是否有什么可以适应这种情况?。

    不是 加载。我不想在init中执行,因为我会在那里执行,然后在加载视图状态时可能需要再次执行。

    因此,我需要能够在未加载视图状态时运行代码(即未调用LoadViewState时) 在控件的生命周期中(之后 Init LoadPostData )

    2 回复  |  直到 15 年前
        1
  •  0
  •   Brian Mains    15 年前

    Init在LoadViewState之前激发,Load在LoadViewState之后激发。我不知道那批货是不是在回邮前被炒的。。。默认情况下,LoadViewState不会在初始页面加载时调用,而是在所有其他时间调用。。。所以我假设你有这个控件的自定义viewstate处理并且正在做一些特殊的事情?您可以做的另一件事是,在LoadViewState方法运行之后,放置一个自定义事件,并在LoadViewState例程的末尾激发这个事件。。。

        2
  •  0
  •   Bob Fincheimer    15 年前

    LoadViewState 不是每次回邮都要打电话,但是 LoadControlState

    Page.RegisterRequiresControlState(Me)

    然后我实施了:

    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
    

    负载控制状态 总是在每次回发时调用,我可以相应地处理我的处理

    推荐文章