Control.NamingContainer 속성

정의

동일한 ID 속성 값을 사용하는 서버 컨트롤을 구별하기 위해 고유의 네임스페이스를 만드는 서버 컨트롤의 명명 컨테이너에 대한 참조를 가져옵니다.Gets a reference to the server control's naming container, which creates a unique namespace for differentiating between server controls with the same ID property value.

public:
 virtual property System::Web::UI::Control ^ NamingContainer { System::Web::UI::Control ^ get(); };
[System.ComponentModel.Bindable(false)]
[System.ComponentModel.Browsable(false)]
public virtual System.Web.UI.Control NamingContainer { get; }
member this.NamingContainer : System.Web.UI.Control
Public Overridable ReadOnly Property NamingContainer As Control

속성 값

서버 컨트롤의 명명 컨테이너입니다.The server control's naming container.

특성

예제

다음 예제에서는 NamingContainer 속성을 사용 하는 방법을 보여 줍니다.The following example demonstrates using the NamingContainer property.

<% @ Import Namespace = "System.Data"  %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
   <head>
    <title>
            Control NamingContainer Example
         </title>
<script language="C#" runat="server">
      // Build the DataSource.
      ICollection CreateDataSource()
      {
         DataTable myDataTable = new DataTable();
         DataRow myDataRow;
         myDataTable.Columns.Add(new DataColumn("EmployeeName", typeof(string)));
         for (int i = 0; i < 10; i++) 
         {
            myDataRow = myDataTable.NewRow();
            myDataRow[0] = "somename" + i.ToString();
            myDataTable.Rows.Add(myDataRow);
         }
         DataView myDataView = new DataView(myDataTable);
         return myDataView;
      }

      void Page_Load(Object sender, EventArgs e) 
      {
         if (!IsPostBack) 
         {
            // Bind 'DataView' to the DataSource.
            myDataList.DataSource = CreateDataSource();
            myDataList.DataBind();
         }
         // Attach EventHandler for SelectedIndexChanged event.
         myDataList.SelectedIndexChanged += new EventHandler(selectedItemChanged);
      }

      // Handler function for 'SelectedIndexChanged' event.
      void selectedItemChanged(Object sender,EventArgs e)
      {
         DataListItem myCurrentItem = myDataList.SelectedItem;
         Control myNamingContainer = myCurrentItem.Controls[0].NamingContainer;
         // Display the NamingContainer.
         myLabel1.Text = "The NamingContainer is : " + myNamingContainer.UniqueID;
         // Display the UniqueID.
         myLabel2.Text = "The UniqueID is : " + ((Control)(myCurrentItem.Controls[0])).UniqueID;
      }      

    </script>
   </head>
   <body>
      <form runat="server" id="Form1">
         <h3>
            Control NamingContainer Example
         </h3>
         <h4>
            Click an item to view it's Naming Container and UniqueID
         </h4>
         <asp:Label ID="myLabel1" Runat="server"></asp:Label>
         <br />
         <asp:Label ID="myLabel2" Runat="server"></asp:Label>
         <br />
         <asp:DataList id="myDataList" runat="server" BorderColor="black">
            <HeaderStyle BackColor="#aaaadd"></HeaderStyle>
            <SelectedItemStyle BackColor="lightgreen"></SelectedItemStyle>
            <HeaderTemplate>
               EmployeeName
            </HeaderTemplate>
            <ItemTemplate>
               <asp:LinkButton id="button1" Text='<%# DataBinder.Eval(Container.DataItem, "EmployeeName") %>' CommandName="select" runat="server" />
               &nbsp;&nbsp;&nbsp;&nbsp;
            </ItemTemplate>
         </asp:DataList>
      </form>
   </body>
</html>
<%@ Import Namespace = "System.Data"  %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
   <head>
    <title>
            Control NamingContainer Example
         </title>
<script language="VB" runat="server">
      ' Build the DataSource.
      Function CreateDataSource() As ICollection
         Dim myDataTable As New DataTable()
         Dim myDataRow As DataRow
         myDataTable.Columns.Add(New DataColumn("EmployeeName", GetType(String)))
         Dim i As Integer
         For i = 0 To 9
            myDataRow = myDataTable.NewRow()
            myDataRow(0) = "somename" + i.ToString()
            myDataTable.Rows.Add(myDataRow)
         Next i
         Dim myDataView As New DataView(myDataTable)
         Return myDataView
      End Function

      Sub Page_Load(sender As Object, e As EventArgs)
         If Not IsPostBack Then
            ' Bind 'DataView' to the DataSource.
            myDataList.DataSource = CreateDataSource()
            myDataList.DataBind()
         End If
         ' Attach EventHandler for SelectedIndexChanged event.
         AddHandler myDataList.SelectedIndexChanged, AddressOf selectedItemChanged
      End Sub

      ' Handler function for 'SelectedIndexChanged' event.
      Sub selectedItemChanged(sender As Object, e As EventArgs)
         Dim myCurrentItem As DataListItem = myDataList.SelectedItem
         Dim myNamingContainer As Control = myCurrentItem.Controls(0).NamingContainer
         ' Display the NamingContainer.
         myLabel1.Text = "The NamingContainer is : " + myNamingContainer.UniqueID
         ' Display the UniqueID.
         myLabel2.Text = "The UniqueID is : " + CType(myCurrentItem.Controls(0), Control).UniqueID
      End Sub
    </script>
   </head>
   <body>
      <form runat="server" id="Form1">
         <h3>
            Control NamingContainer Example
         </h3>
         <h4>
            Click an item to view it's Naming Container and UniqueID
         </h4>
         <asp:Label ID="myLabel1" Runat="server"></asp:Label>
         <br />
         <asp:Label ID="myLabel2" Runat="server"></asp:Label>
         <br />
         <asp:DataList id="myDataList" runat="server" BorderColor="black">
            <HeaderStyle BackColor="#aaaadd"></HeaderStyle>
            <SelectedItemStyle BackColor="lightgreen"></SelectedItemStyle>
            <HeaderTemplate>
               EmployeeName
            </HeaderTemplate>
            <ItemTemplate>
               <asp:LinkButton id="button1" Text='<%# DataBinder.Eval(Container.DataItem, "EmployeeName") %>' CommandName="select" runat="server" />
               &nbsp;&nbsp;&nbsp;&nbsp;
            </ItemTemplate>
         </asp:DataList>
      </form>
   </body>
</html>

설명

ASP.NET 웹 애플리케이션의 각 페이지 컨트롤 계층을 포함 합니다.Each page in an ASP.NET Web application contains a hierarchy of controls. 이 계층 구조 컨트롤을 사용자에 게 표시 되는 UI를 생성 하는지 여부에 종속 되지 않습니다.This hierarchy is not dependent on whether a control generates UI visible to the user. 지정 된 컨트롤에 대 한 명명 컨테이너는 INamingContainer 인터페이스를 구현 하는 계층 구조에서 위의 부모 컨트롤입니다.The naming container for a given control is the parent control above it in the hierarchy that implements the INamingContainer interface. 이 인터페이스를 구현 하는 서버 컨트롤은 자식 서버 컨트롤의 ID 속성 값에 대 한 고유한 네임 스페이스를 만듭니다.A server control that implements this interface creates a unique namespace for the ID property values of its child server controls. 명명 컨테이너의 자식 컨트롤의 NamingContainer 속성을 사용 하 여 부모 컨테이너에 대 한 참조를 가져올 수 있습니다.You can use the NamingContainer property of a naming container's child control to get a reference to its parent container.

서버 컨트롤에 대 한 고유한 네임 스페이스를 만드는 것은 RepeaterDataList 서버 컨트롤과 같은 웹 서버 컨트롤을 데이터에 바인딩할 때 특히 중요 합니다.Creating a unique namespace for server controls is particularly important when you bind Web server controls to data, such as the Repeater and DataList server controls. 데이터 소스의 여러 항목이 반복 되는 컨트롤의 자식인 서버 컨트롤의 여러 인스턴스를 만드는 경우 명명 컨테이너는 이러한 자식 컨트롤의 각 인스턴스에 충돌 하지 않는 UniqueID 속성 값이 있는지 확인 합니다.When multiple entries in the data source create multiple instances of a server control that is a child of the repeating control, the naming container ensures that each instance of these child controls have UniqueID property values that do not conflict. 페이지의 기본 명명 컨테이너는 해당 페이지가 요청 될 때 생성 되는 Page 클래스의 인스턴스입니다.The default naming container for a page is the instance of the Page class that is generated when that page is requested.

ClientID 속성은 HTML 태그에서 요소의 id 특성으로 렌더링 되는 값을 포함 합니다.The ClientID property contains the value that is rendered as the element's id attribute in the HTML markup. ClientIDMode 속성에 할당 하는 값에 따라 ClientID 속성에 대해 생성 되는 값에 NamingContainer 개체의 ID가 포함 될 수 있습니다.Depending on the value that you assign to the ClientIDMode property, the value that is generated for the ClientID property might include the ID of the NamingContainer object. ClientIDModeStatic로 설정 하면 ClientID 값에 NamingContainer 개체의 ID가 포함 되지 않습니다.When you set ClientIDMode to Static, the ClientID value does not include the ID of the NamingContainer object. ClientIDModeAutoID 또는 Predictable로 설정 하면 ClientID 값에 NamingContainer 개체의 ID가 포함 됩니다.When you set ClientIDMode to either AutoID or Predictable, the ClientID value will include the ID from the NamingContainer object. 자세한 내용은 ASP.NET 웹 서버 컨트롤 식별을 참조하세요.For more information, see ASP.NET Web Server Control Identification.

적용 대상

추가 정보