次の方法で共有


Control.EnsureChildControls メソッド

定義

サーバー コントロールに子コントロールが含まれているかどうかを確認します。 含まれていない場合、子コントロールを作成します。

protected:
 virtual void EnsureChildControls();
protected virtual void EnsureChildControls ();
abstract member EnsureChildControls : unit -> unit
override this.EnsureChildControls : unit -> unit
Protected Overridable Sub EnsureChildControls ()

次の例では、 メソッドを EnsureChildControls 使用して、現在のサーバー コントロールに子コントロールがあることを確認します。 次に、現在のサーバー コントロールの Text オブジェクト内の子 TextBox Web コントロールの ControlCollection プロパティを取得または設定します。

重要

この例には、ユーザー入力を受け付けるテキスト ボックスがあります。これにより、セキュリティが脆弱になる可能性があります。 既定では、ASP.NET Web ページによって、ユーザー入力にスクリプトまたは HTML 要素が含まれていないかどうかが検証されます。 詳細については、「スクリプトによる攻略の概要」を参照してください。

// Ensure the current control has children,
// then get or set the Text property.
 public int Value {
    get {
        this.EnsureChildControls();
        return Int32.Parse(((TextBox)Controls[1]).Text);
    }
    set {
        this.EnsureChildControls();
        ((TextBox)Controls[1]).Text = value.ToString();
    }
 }

' Ensure the current control has children,
' then get or set the Text property.

Public Property Value() As Integer
   Get
      Me.EnsureChildControls()
      Return Int32.Parse(CType(Controls(1), TextBox).Text)
   End Get
   Set
      Me.EnsureChildControls()
      CType(Controls(1), TextBox).Text = value.ToString()
   End Set
End Property


注釈

このメソッドは、最初に プロパティの現在の値を確認します ChildControlsCreated 。 この値が の場合、 falseCreateChildControls メソッドが呼び出されます。

メソッドは EnsureChildControls 通常、複合コントロールで使用されます。これは、一部またはすべての機能に子コントロールを使用するコントロールです。 EnsureChildControls子コントロールが作成され、入力の処理、データ バインディングの実行、または他のタスクの実行の準備が整っていることを確認するために、 メソッドが呼び出されます。

コントロールは GridView 複合コントロールの例です。 によって生成される HTML テーブルのレンダリングに使用される、、LabelTableCell、および TextBox コントロールなどのTableTableRow子コントロールがGridView作成されます。

ほとんどの場合、カスタム サーバー コントロール開発者はこのメソッドをオーバーライドする必要はありません。 このメソッドをオーバーライドする場合は、既定の動作と同様の方法で使用します。

適用対象

こちらもご覧ください