Control.UniqueID プロパティ

定義

階層構造で修飾されたサーバー コントロールの一意の ID を取得します。

public:
 virtual property System::String ^ UniqueID { System::String ^ get(); };
[System.ComponentModel.Browsable(false)]
public virtual string UniqueID { get; }
[<System.ComponentModel.Browsable(false)>]
member this.UniqueID : string
Public Overridable ReadOnly Property UniqueID As String

プロパティ値

String

サーバー コントロールの完全修飾 ID。

属性

次の例では、オブジェクトをArrayList作成し、3 つのテキスト文字列を設定し、ページが読み込まれるときに Web サーバー コントロールをデータにArrayListバインドRepeaterします。 コードは、データ バインディング中に UniqueID 生成された各子コントロールのプロパティを取得します。 このコードは、コントロールの 3 つのバージョンを Label 生成し、そのプロパティ値を UniqueID ページに書き込みます。

<script language="c#" runat="server">
    
  void Page_Load(Object sender, EventArgs e) 
  {
      StringBuilder sb = new StringBuilder();
      sb.Append("Container: " + 
          MyDataList.NamingContainer.ToString() + "<p>");

      ArrayList a = new ArrayList();
      a.Add("A");
      a.Add("B");
      a.Add("C");

      MyDataList.DataSource = a;
      MyDataList.DataBind();

      for (int i = 0; i < MyDataList.Controls.Count; i++)
      {
          Label l = 
              (Label)((RepeaterItem)MyDataList.Controls[i]).FindControl("MyLabel");
          sb.Append("Container: " + 
              ((RepeaterItem)MyDataList.Controls[i]).NamingContainer.ToString() + 
              "<p>");
          sb.Append("<b>" + l.UniqueID + "</b><p>");
      }
      ResultsLabel.Text = sb.ToString();
}
</script>
  <script language="vb" runat="server">
      
      Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
          Dim sb As New StringBuilder()
          sb.Append("Container: " + _
          MyDataList.NamingContainer.ToString() + "<p>")

          Dim a As New ArrayList()
          a.Add("A")
          a.Add("B")
          a.Add("C")

          MyDataList.DataSource = a
          MyDataList.DataBind()
    
          Dim i As Integer
          Dim l As Label
          For i = 0 To MyDataList.Controls.Count - 1
              l = CType(CType(MyDataList.Controls(i), RepeaterItem).FindControl("MyLabel"), Label)
              sb.Append("Container: " & _
                 CType(MyDataList.Controls(i), RepeaterItem).NamingContainer.ToString() & _
                 "<p>")
              sb.Append("<b>" & l.UniqueID.ToString() & "</b><p>")
          Next
          ResultsLabel.Text = sb.ToString()
      End Sub
</script>

注釈

このプロパティは、サーバー コントロールの ID 名前付けコンテナーの識別子を含むという点 UniqueID で、プロパティとは異なります。 この識別子は、ページ要求が処理されるときに自動的に生成されます。

このプロパティは、繰り返されるデータ バインディング サーバー コントロール内に含まれるサーバー コントロールを区別する場合に特に重要です。 繰り返しコントロール (RepeaterFormViewDataListDetailsViewデータバインド時に繰り返しGridView機能を含むカスタム サーバー コントロール) 、つまり、Web サーバー コントロール (または作成したカスタム サーバー コントロール) は、子コントロールの名前付けコンテナーとして機能します。 つまり、プロパティ値が競合しないように、子コントロールの一意の名前空間が ID 作成されます。

たとえば、ASP.NET Label Web サーバー コントロールをサーバー コントロールに含め、コントロールにRepeater Label IDプロパティ値 MyLabel、および .Repeater ID MyRepeater 3 つのエントリを持つオブジェクトにArrayListRepeaterデータをバインドする場合、サーバー コントロールの各インスタンスの結果UniqueIDLabelプロパティは MyRepeater$ctl00$MyLabel、、MyRepeater$ctl01$MyLabelおよびMyRepeater$ctl02$MyLabelです。

適用対象

こちらもご覧ください