Mit ASP.NET können Benutzer Steuerelemente erstellen. Diese benutzerdefinierten Steuerelemente werden wie folgt klassifiziert:
Benutzerkontrolle
Benutzerdefinierte Steuerelemente
Benutzersteuerelemente verhalten sich wie Miniatur-ASP.NET-Seiten oder Webformulare, die von vielen anderen Seiten verwendet werden können. Diese werden von der System.Web.UI.UserControl-Klasse abgeleitet. Diese Steuerelemente haben die folgenden Eigenschaften:
Sie haben die Erweiterung .ascx.
Sie dürfen keine oder-Tags enthalten.
Sie haben eine Control-Direktive anstelle einer Page-Direktive.
Um dieses Konzept zu verstehen, erstellen wir ein einfaches Benutzersteuerelement, das als Fußzeile einer Webseite dient. Um Benutzersteuerelemente zu erstellen und zu verwenden, führen Sie die folgenden Schritte aus:
Erstellen Sie eine neue Webanwendung.
Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf den Projektordner und wählen Sie Neues Element hinzufügen aus.
Wählen Sie im Dialogfeld „Neues Element hinzufügen“ die Option „Webbenutzersteuerung“ aus und nennen Sie sie „footer.ascx“. Footer.ascx enthält zunächst nur eine Control-Direktive.
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="footer.ascx.cs" Inherits="customcontroldemo.footer" %>
Fügen Sie der Datei den folgenden Code hinzu:
<table> <tr> <td align="center"> Copyright ©2010 TutorialPoints Ltd.</td> </tr> <tr> <td align="center"> Ort: Hyderabad, AP </td> </ tr></table>
Um Ihrer Webseite ein Benutzersteuerelement hinzuzufügen, müssen Sie eine Register-Direktive und eine Instanz des Seitenbenutzersteuerelements hinzufügen. Der folgende Code zeigt die Anweisungen:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="customcontroldemo._Default" %><%@ Register Src="~/footer.ascx" TagName="footer" TagPrefix="Tfooter" %><!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 runat="server"> <title> Unbenannte Seite </title> </head> <body> <form id="form1" runat="server"> <div> <asp:Label ID="Label1" runat="server" Text="Willkommen bei ASP.Net-Tutorials "></asp:Label> <br /> <br /> <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text ="Copyright-Info" /> </div> <Tfooter:footer ID="footer1" runat="server" /> </form> </body></html>
Bei der Ausführung wird die Fußzeile der Seite angezeigt und das Steuerelement ist auf allen Seiten Ihrer Website verfügbar.
Beachten Sie Folgendes:
(1) Der Befehl „Register“ gibt einen Labelnamen und ein Labelpräfix für das Steuerelement an.
<%@ Register Src="~/footer.ascx" TagName="footer" TagPrefix="Tfooter" %>
(2) Beim Hinzufügen von Benutzersteuerelementen auf der Seite sollten die folgenden Tag-Namen und Präfixe verwendet werden:
<Tfooter:footer ID="footer1" runat="server" />
Benutzerdefinierte Steuerelemente werden als separate Sammlungen bereitgestellt. Sie werden in Dynamic Link Libraries (DLL) kompiliert und wie jedes andere ASP.NET-Dienststeuerelement verwendet. Sie können mit einer der folgenden Methoden erstellt werden:
Indem Sie ein benutzerdefiniertes Steuerelement von einem vorhandenen Steuerelement abrufen.
Erstellen Sie ein neues benutzerdefiniertes Steuerelement, indem Sie zwei oder mehr vorhandene Steuerelemente kombinieren.
Indem Sie es von der Basiskontrollklasse abrufen.
Um dieses Konzept zu verstehen, erstellen wir eine benutzerdefinierte Klasse, die einfach eine Textnachricht im Browser rendert. Um das Steuerelement zu erstellen, führen Sie die folgenden Schritte aus:
Erstellen Sie eine neue Website. Klicken Sie mit der rechten Maustaste auf die Projektmappe (nicht auf das Projekt) oben in der Struktur im Projektmappen-Explorer.
Wählen Sie im Dialogfeld „Neues Projekt“ die Option „ASP.NET Server Control“ aus der Projektvorlage aus.
Mit den obigen Schritten fügen Sie ein neues Projekt hinzu und erstellen ein vollständiges benutzerdefiniertes Steuerelement für die Lösung namens ServerControl1. Lassen Sie mich in diesem Beispiel das CustomControls-Projekt benennen. Um dieses Steuerelement verwenden zu können, muss es als Referenz zur Webseite hinzugefügt werden, bevor es auf der Seite registriert wird. Um einen Verweis auf ein vorhandenes Projekt hinzuzufügen, klicken Sie mit der rechten Maustaste auf das Projekt (nicht auf die Lösung) und klicken Sie auf Verweis hinzufügen.
Wählen Sie im Dialogfeld „Referenz hinzufügen“ auf der Registerkarte „Projekte“ das Projekt „CustomControl“ aus. Der Solution Explorer kann Referenzen anzeigen.
Um das Steuerelement auf der Seite zu verwenden, fügen Sie eine Register-Direktive unter der @Page-Direktive hinzu.
<%@ Register Assembly="CustomControls" Namespace="CustomControls" TagPrefix="ccs" %>
Darüber hinaus können Sie Steuerelemente wie jedes andere Steuerelement verwenden.
<form id="form1" runat="server"> <div> <ccs:ServerControl1 runat="server" Text = "Ich bin ein benutzerdefiniertes Serversteuerelement" /> </div> </form>
Bei der Ausführung wird die Text-Eigenschaft des Steuerelements im Browser angezeigt, wie unten gezeigt:
Im vorherigen Beispiel wurde der Text-Eigenschaftswert der benutzerdefinierten Klasse festgelegt. ASP.NET fügt diese Eigenschaft standardmäßig hinzu, wenn das Steuerelement erstellt wird. Der folgende Code nach der Datei des Steuerelements verrät dies.
using System;using System.Collections.Generic;using System.ComponentModel;using System.Linq;using System.Text;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;namespace CustomControls{ [ DefaultProperty("Text")] [ToolboxData("<{0}:ServerControl1 runat=server></{0}:ServerControl1 >")] öffentlich Klasse ServerControl1: WebControl { [Bindable(true)] [Category("Appearance")] [DefaultValue("")] [Localizable(true)] public string Text { get { String s = (String)ViewState["Text"] ; return ((s == null) ? "[" + this.ID + "]" : s } set { ViewState["Text"] = value; } } protected override void RenderContents(HtmlTextWriter-Ausgabe) {output.Write(Text);
Der obige Code wird automatisch für ein benutzerdefiniertes Steuerelement generiert. Ereignisse und Methoden können zu benutzerdefinierten Steuerelementklassen hinzugefügt werden.
Erweitern wir das vorherige benutzerdefinierte Steuerelement mit dem Namen ServerControl1. Geben wir ihm eine Methode namens checkpalindrome, die ihm die Erlaubnis gibt, das Palindrom zu überprüfen.
Palindrom ist ein Wort-/Literalwert, der umgekehrt immer noch dasselbe buchstabiert. Zum Beispiel Malayalam, Madam, Saras usw.
Erweitern Sie den Code für Ihr benutzerdefiniertes Steuerelement und es sollte so aussehen:
using System;using System.Collections.Generic;using System.ComponentModel;using System.Linq;using System.Text;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;namespace CustomControls{ [ DefaultProperty("Text")] [ToolboxData("<{0}:ServerControl1 runat=server></{0}:ServerControl1 >")] öffentlich Klasse ServerControl1: WebControl { [Bindable(true)] [Category("Appearance")] [DefaultValue("")] [Localizable(true)] public string Text { get { String s = (String)ViewState["Text"] ; return ((s == null) ? "[" + this.ID + "]" : s } set { ViewState["Text"] = value; } } protected override void RenderContents(HtmlTextWriter-Ausgabe) { if (this.checkpanlindrome()) { Output.Write("Dies ist ein Palindrom: <br />"); Output.Write("<FONT size=5 color=Blue >"); Output.Write("<B>"); Output.Write(Text); Output.Write("</B>"); Output.Write("</FONT>"); } else { Output.Write("Dies ist kein Palindrom: <br />"); Output.Write("<B>"); Output.Write("</FONT>"); Output.Write("</FONT>"); if (this.Text != null) { String str = this.Text; String strtoupper = Text.ToUpper(); char[] rev = strtoupper.ToCharArray(); rev); if (strtoupper == strrev) { return true; } } else { return false;
Wenn Sie den Code eines Bereichs ändern, müssen Sie die Methode erstellen, indem Sie auf Erstellen --> Lösung erstellen klicken, damit die Änderungen in Ihrem Projekt berücksichtigt werden können. Fügen Sie der Seite ein Textfeld und ein Schaltflächensteuerelement hinzu, damit der Benutzer einen Text bereitstellen kann. Wenn auf die Schaltfläche geklickt wird, wird sie zur Überprüfung des Palindroms verwendet.
<form id="form1" runat="server"> <div> Geben Sie ein Wort ein: <br /> <asp:TextBox ID="TextBox1" runat="server"> </asp:TextBox> <br /> < br /> <asp:Button ID="Button1" runat="server onclick="Button1_Click" Text="Palindrom prüfen" /> <br /> <br /> <ccs:ServerControl1 ID="ServerControl11" runat="server" Text = "" /> </div></form>
Der Click-Ereignishandler der Schaltfläche kopiert einfach den Text im Textfeld in die Texteigenschaft des benutzerdefinierten Steuerelements.
protected void Button1_Click(object sender, EventArgs e){ this.ServerControl11.Text = this.TextBox1.Text;}
Bei der Ausführung erkennt das Steuerelement erfolgreich Palindrome.
Beachten Sie Folgendes:
(1) Wenn Sie einen Verweis auf ein benutzerdefiniertes Steuerelement hinzufügen, wird es zur Toolbox hinzugefügt und Sie können es wie andere Steuerelemente direkt aus der Toolbox verwenden.
(2) Die RenderContents-Methode der benutzerdefinierten Steuerelementklasse wurde überschrieben und Sie können Ihre eigenen Methoden und Ereignisse hinzufügen.
(3) Die RenderContents-Methode akzeptiert einen HtmlTextWriter-Typparameter, der für die Anzeige im Browser verantwortlich ist.