次の方法で共有


Page.RegisterRequiresControlState(Control) メソッド

定義

特定のコントロールを、コントロールの状態を維持する必要があるコントロールとして登録します。

public:
 void RegisterRequiresControlState(System::Web::UI::Control ^ control);
public void RegisterRequiresControlState (System.Web.UI.Control control);
member this.RegisterRequiresControlState : System.Web.UI.Control -> unit
Public Sub RegisterRequiresControlState (control As Control)

パラメーター

control
Control

登録するコントロール。

例外

登録するコントロールが null です。

RegisterRequiresControlState(Control) メソッドを呼び出すことができるのは、PreRender イベントの前か中だけです。

次のコード例は、 メソッドを呼び出すカスタム サーバー コントロールを RegisterRequiresControlState 示しています。

public class Sample : Control {
    private int currentIndex = 0;
   
    protected override void OnInit(EventArgs e) {
        Page.RegisterRequiresControlState(this);
        base.OnInit(e);
    }

    protected override object SaveControlState() {
        return currentIndex != 0 ? (object)currentIndex : null;
    }

    protected override void LoadControlState(object state) {
        if (state != null) {
            currentIndex = (int)state;
        }
    }
}
Class Sample
  Inherits Control
  
  Dim currentIndex As Integer
  
      Protected Overrides Sub OnInit(ByVal e As EventArgs)
          Page.RegisterRequiresControlState(Me)
          currentIndex = 0
          MyBase.OnInit(e)
      End Sub
  
      Protected Overrides Function SaveControlState() As Object
          If currentIndex <> 0 Then
              Return CType(currentIndex, Object)
          Else
              Return Nothing
          End If
      End Function
  
      Protected Overrides Sub LoadControlState(ByVal state As Object)
          If (state <> Nothing) Then
              currentIndex = CType(state, Integer)
          End If
      End Sub
  
End Class

注釈

制御状態を使用するカスタム サーバー コントロールは、ポストバック イベント中に要求から要求に制御状態の登録が引き継がされないため、各要求で メソッドを呼び出す RegisterRequiresControlState 必要があります。 イベントで Init 登録を行うことをお勧めします。

適用対象

こちらもご覧ください