Gewusst wie: Programmgesteuertes Erstellen von Instanzen eines ASP.NET-Benutzersteuerelements

Aktualisiert: November 2007

Auf einer ASP.NET-Webseite können Sie Instanzen von Benutzersteuerelementen auf dieselbe Weise programmgesteuert erstellen wie Instanzen von anderen Serversteuerelementen.

So erstellen Sie eine Instanz eines Benutzersteuerelements programmgesteuert

  1. Stellen Sie sicher, dass die @ Control-Direktive des Benutzersteuerelements ein ClassName-Attribut enthält, das dem Benutzersteuerelement eine Klasse zuweist.

    Im folgenden Beispiel wird das ClassName-Attribut festgelegt, um ein Benutzersteuerelement strikt zu typisieren.

    <%@ Control className="MyUserControl" %>
    
  2. Erstellen Sie in der Seite, in der Sie mit dem Benutzersteuerelement arbeiten möchten, unter Verwendung der @ Reference-Direktive einen Verweis auf das Benutzersteuerelement.

    Beim programmgesteuerten Erstellen eines Benutzersteuerelements steht der ASP.NET-Webseite die strikte Typbindung für das Benutzersteuerelement erst zur Verfügung, nachdem ein Verweis darauf erstellt wurde. Mit folgendem Code wird z. B. ein Verweis auf ein Benutzersteuerelement erstellt, das in der Datei MyUserControl.ascx erstellt wurde.

    <%@ Reference Control="MyUserControl.ascx" %>
    
    Hinweis:

    Verwenden Sie @ Reference, wenn Sie beabsichtigen, das Steuerelement programmgesteuert zu laden. Verwenden Sie die @ Register-Direktive, wenn Sie der Seite ein Benutzersteuerelement deklarativ hinzufügen. Einzelheiten finden Sie unter Gewusst wie: Einfügen eines Benutzersteuerelements in eine ASP.NET-Webseite.

  3. Erstellen Sie mit dem Klassennamen des Steuerelements eine Instanzvariable für das Benutzersteuerelement. Die Klasse ist Teil des ASP-Namespaces.

    Wenn Sie beispielsweise eine Instanz des als Spinner-Klasse deklarierten Benutzersteuerelements erstellen möchten, können Sie folgende Syntax verwenden:

    Protected Spinner1 As ASP.Spinner
    
    Protected ASP.Spinner Spinner1;
    
  4. Erstellen Sie im Code eine Instanz des Benutzersteuerelements, indem Sie die LoadControl-Methode aufrufen.

  5. Weisen Sie je nach den Erfordernissen Eigenschaftenwerte zu, und fügen Sie das Steuerelement dann der ControlCollection-Auflistung eines Containers auf der Seite zu, z. B. einem PlaceHolder-Steuerelement.

    Hinweis:

    Wenn Sie dem ControlCollection-Objekt mit der Add-Methode Steuerelemente hinzufügen, werden die Steuerelemente in der Reihenfolge ihrer Verarbeitung in der Auflistung platziert. Wenn Sie ein Steuerelement an einer bestimmten Position in der Auflistung hinzufügen möchten, verwenden Sie die AddAt-Methode und geben die Indexposition an, an der Sie das Steuerelement speichern möchten.

Beispiel

Im folgenden Beispiel wird eine ASP.NET-Webseite gezeigt, die ein Benutzersteuerelement programmgesteuert lädt. Die Seite schließt eine @ Reference-Direktive ein, um die Datei des Steuerelements anzugeben. Die LoadControl-Methode liest die Datei und instanziiert sie als ein Steuerelement, das der Seite hinzugefügt werden kann.

<%@ Page Language="VB" %>
<%@ Reference Control="~\Controls\Spinner.ascx" %>

<script >
Private Spinner1 As ASP.Spinner
Protected Sub Page_Load(ByVal sender As Object, _
        ByVal e As System.EventArgs)
    Spinner1 = CType(LoadControl("~\Controls\Spinner.ascx"), _
        ASP.Spinner)
    ' Set MaxValue first.
    Spinner1.MaxValue = 20
    Spinner1.MinValue = 10
    PlaceHolder1.Controls.Add(Spinner1)
End Sub

Protected Sub Button1_Click(ByVal sender As Object, _
      ByVal e As System.EventArgs)
    Label1.Text = Spinner1.CurrentNumber.ToString()
End Sub
</script>
<html>
<head id="Head1" >
  <title>Load User Control Programmatically</title>
</head>
<body>
  <form id="form1" >
    <div>
      <asp:PlaceHolder runat=server ID="PlaceHolder1" />
      <br />
      <asp:Button ID="Button1"  
        Text="Button" 
        OnClick="Button1_Click" />
      <br />
      <br />
      <asp:Label ID="Label1"  Text=""></asp:Label>
    </div>
  </form>
</body>
</html>
<%@ Page Language="C#" %>
<%@ Reference Control="~/Controls/Spinner.ascx" %>
<script >
private ASP.Spinner Spinner1;
protected void Page_Load(object sender, EventArgs e)
{
    Spinner1 = (ASP.Spinner)LoadControl("~/Controls/Spinner.ascx");
     // Set MaxValue first.
    Spinner1.MaxValue = 20;
    Spinner1.MinValue = 10;
    PlaceHolder1.Controls.Add(Spinner1);
}

protected void Button1_Click(object sender, EventArgs e)
{
    Label1.Text = Spinner1.CurrentNumber.ToString();
}
</script>

<html>
<head id="Head1" >
  <title>Load User Control Programmatically</title>
</head>
<body>
  <form id="form1" >
    <div>
      <asp:PlaceHolder runat=server ID="PlaceHolder1" />
      <br />
      <asp:Button ID="Button1"  
        Text="Button" 
        OnClick="Button1_Click" />
      <br />
      <br />
      <asp:Label ID="Label1"  Text=""></asp:Label>
    </div>
  </form>
</body>
</html>

Siehe auch

Konzepte

Übersicht über ASP.NET-Benutzersteuerelemente