Control.NamingContainer Control.NamingContainer Control.NamingContainer Control.NamingContainer Property

Definition

Ruft einen Verweis auf den Benennungscontainer des Serversteuerelements ab, der einen eindeutigen Namespace erstellt, damit zwischen Serversteuerelementen mit demselben ID-Eigenschaftswert unterschieden werden kann.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

Eigenschaftswert

Der Benennungscontainer des Serversteuerelements.The server control's naming container.

Beispiele

Im folgenden Beispiel wird die Verwendung NamingContainer der-Eigenschaft veranschaulicht.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>

Hinweise

Jede Seite in einer ASP.NET-Webanwendung enthält eine Hierarchie von Steuerelementen.Each page in an ASP.NET Web application contains a hierarchy of controls. Diese Hierarchie ist nicht davon abhängig, ob ein Steuerelement für den Benutzer eine Benutzeroberfläche generiert.This hierarchy is not dependent on whether a control generates UI visible to the user. Der Benennungs Container für ein bestimmtes Steuerelement ist das übergeordnete Steuerelement in der Hierarchie INamingContainer , die die-Schnittstelle implementiert.The naming container for a given control is the parent control above it in the hierarchy that implements the INamingContainer interface. Ein Server Steuerelement, das diese Schnittstelle implementiert, erstellt einen eindeutigen ID Namespace für die Eigenschaftswerte der untergeordneten Server Steuerelemente.A server control that implements this interface creates a unique namespace for the ID property values of its child server controls. Sie können die NamingContainer -Eigenschaft des untergeordneten Steuer Elements eines Benennungs Containers verwenden, um einen Verweis auf den übergeordneten Container zu erhalten.You can use the NamingContainer property of a naming container's child control to get a reference to its parent container.

Das Erstellen eines eindeutigen Namespace für Server Steuerelemente ist besonders wichtig, wenn Sie Webserver-Steuerelemente an Daten binden Repeater , DataList z. b. die-und-Server Steuerelemente.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. Wenn mehrere Einträge in der Datenquelle mehrere Instanzen eines Server Steuer Elements erstellen, das ein untergeordnetes Element des sich wiederholenden Steuer Elements ist, stellt der Benennungs Container sicher, UniqueID dass jede Instanz dieser untergeordneten Steuerelemente Eigenschaftswerte hat, die keinen Konflikt verursachen.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. Der standardmäßige Benennungs Container für eine Seite ist die Instanz Page der-Klasse, die generiert wird, wenn diese Seite angefordert wird.The default naming container for a page is the instance of the Page class that is generated when that page is requested.

Die ClientID -Eigenschaft enthält den Wert, der als-Attribut des id Elements im HTML-Markup gerendert wird.The ClientID property contains the value that is rendered as the element's id attribute in the HTML markup. Abhängig von dem Wert, den Sie der ClientIDMode -Eigenschaft zuweisen, kann der Wert, der für die ClientID -Eigenschaft generiert wird, die NamingContainer ID des-Objekts enthalten.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. Wenn Sie auf ClientIDMode Staticfestlegen, enthält ClientID der NamingContainer Wert nicht die ID des Objekts.When you set ClientIDMode to Static, the ClientID value does not include the ID of the NamingContainer object. Wenn Sie entweder ClientIDMode AutoID auf oder Predictablefestlegen, enthält ClientID der Wert die ID aus dem NamingContainer -Objekt.When you set ClientIDMode to either AutoID or Predictable, the ClientID value will include the ID from the NamingContainer object. Weitere Informationen finden Sie unter Steuerelementidentifikation in Web Forms.For more information, see ASP.NET Web Server Control Identification.

Gilt für:

Siehe auch