TOC

This article has been localized into German by the community.

Benutzersteuerelemente:

Verwenden eines Benutzersteuerelements

Im vorherigen Kapitel haben wir ein Benutzersteuerelement erstellt, und jetzt werden wir versuchen, es zum ersten Mal zu verwenden. Wählen Sie eine Seite in Ihrem Projekt aus oder erstellen Sie einfach eine neue für diesen Zweck und öffnen Sie sie. Als erstes müssen wir unser Benutzersteuerelement deklarieren. Dies kann entweder auf jeder Seite, auf der es verwendet wird, oder global in der Datei web.config erfolgen. Es gibt keinen Leistungsunterschied, aber wenn Sie Benutzersteuerelemente in der Datei web.config deklarieren, müssen sich die Steuerelemente in einem anderen Verzeichnis befinden als die Seiten, die es verwenden.

Lassen Sie es uns zunächst auf der aktuellen Seite deklarieren. Fügen Sie die folgende Zeile unterhalb der Standardseitendeklaration hinzu:

<%@ Register TagPrefix="My" TagName="UserInfoBoxControl" Src="~/UserInfoBoxControl.ascx" %>

Stellen Sie sicher, dass der Wert src mit dem Pfad zu Ihrer Benutzersteuerelement-Datei übereinstimmt. Jetzt können Sie das Benutzersteuerelement auf Ihrer Seite wie jedes andere Steuerelement verwenden. Zum Beispiel so:

<My:UserInfoBoxControl runat="server" ID="MyUserInfoBoxControl" />

Wenn Sie sich die Seite jetzt ansehen, werden Sie unser Benutzersteuerelement in Aktion sehen, obwohl die Informationen ein bisschen ... begrenzt sein werden. Wir müssen einen Wert für die Eigenschaften festlegen, die wir definiert haben, damit die Dinge ein bisschen interessanter werden. Zum Glück ist es sehr einfach:

<My:UserInfoBoxControl runat="server" ID="MyUserInfoBoxControl" UserName="John Doe" UserAge="45" UserCountry="Australia" />

Sie sehen, auf jedes öffentliche oder geschützte Mitglied kann deklarativ zugegriffen werden, so dass ein einfacher Zugriff möglich ist, wenn wir unsere Kontrolle verwenden. Bei diesem speziellen Benutzersteuerelement besteht jedoch die Möglichkeit, dass Sie die Informationen von einer externen Ressource wie einer Datenbank empfangen und dann das Benutzersteuerelement von dort aus füllen. Hierbei handelt es sich normalerweise um den CodeBehind der Seite. Wie können wir das tun? Eigentlich ziemlich einfach. Versuchen Sie im CodeBehind der Seite Folgendes:

protected void Page_Load(object sender, EventArgs e)
{
    // These values can come from anywhere, but right now, we just hardcode them
    MyUserInfoBoxControl.UserName = "Jane Doe";
    MyUserInfoBoxControl.UserAge = 33;
    MyUserInfoBoxControl.UserCountry = "Germany";
}

Dynamisches Laden

Manchmal möchten Sie Ihrer Seite Benutzersteuerelemente dynamisch hinzufügen, anstatt sie zu deklarieren. Es ist eigentlich auch ganz einfach. Sie benötigen ein vorhandenes Steuerelement, in dem Sie das Benutzersteuerelement beispielsweise einem Panel hinzufügen können. Wenn es auf Ihrer Seite kein logisches Steuerelement gibt, dem Sie es hinzufügen können, können Sie zu diesem Zweck ein Steuerelement erstellen. Das PlaceHolder-Steuerelement eignet sich für Situationen wie diese.

Definieren Sie es auf Ihrer Seite folgendermaßen:

<asp:PlaceHolder runat="server" ID="phUserInfoBox" />

Im CodeBehind der Seite fügen wir das Steuerelement wie folgt hinzu:

phUserInfoBox.Controls.Add(LoadControl("~/UserInfoBoxControl.ascx"));

Wir verwenden die LoadControl-Methode, um das Benutzersteuerelement durch Angabe des Pfads zu instanziieren. Das ist sehr einfach, aber auch sehr anonym. Da wir nur die LoadControl-Methode verwenden, können wir unsere eigenen benutzerdefinierten Eigenschaften nicht wirklich verwenden. Dazu müssen wir .NET darauf aufmerksam machen. Fügen Sie auf der Seite die folgende Deklaration oben hinzu:

<%@ Reference Control="~/UserInfoBoxControl.ascx" %>

Jetzt können wir auf die UserInfoBoxControl-Klasse zugreifen, als ob es eine reguläre Klasse wäre. Dies bedeutet auch, dass wir das von der LoadControl-Methode zurückgegebene Benutzersteuerelement in diesen Typ typisieren können. Im nächsten Beispiel machen wir genau das, dann setzen wir die Eigenschaften und fügen sie schließlich dem PlaceHolder hinzu:

UserInfoBoxControl userInfoBoxControl = (UserInfoBoxControl)LoadControl("~/UserInfoBoxControl.ascx");
userInfoBoxControl.UserName = "John Doe";
userInfoBoxControl.UserAge = 78;
userInfoBoxControl.UserCountry = "Spain";
phUserInfoBox.Controls.Add(userInfoBoxControl);

Dies ist praktisch, wenn Sie beispielsweise einer einzelnen Seite mehrere Instanzen desselben UserControls hinzufügen, da Sie dies in einer Schleife tun können.


This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!