Das Erstellen von Serversteuerelementen in Asp.net erfolgt auf die gleiche Weise wie Windows Form-Steuerelemente. Es gibt mehrere Möglichkeiten:
1. Benutzerkontrolle
2. Benutzerdefinierte Steuerelemente, abgeleitet von Control und WebControl
3. Erweitern Sie die vorhandenen Asp.net-Serversteuerelemente
Benutzersteuerelemente haben die Erweiterung .ascx und müssen nicht wie von Control und WebControl abgeleitete Serversteuerelemente vorkompiliert werden. Wenn Benutzersteuerelemente in .aspx-Seiten verwendet werden, beginnt der Seitenparser dynamisch aus einer ASPX-Datei generiert und in eine Assembly kompiliert. Seine Vorteile sind: Es löst die Wiederverwendung von Code, und jedes Benutzersteuerelement verfügt über ein eigenes Objektmodell, und seine Schreibsprache hat nichts mit der Sprache der ASPX-Seite zu tun.
Es erweitert die bestehende Asp.net-Serversteuerung und erweitert hauptsächlich die Funktionen der nativen .net-Serversteuerung, um den Anforderungen unserer Entwicklungs- und Endbenutzer gerecht zu werden.
Von Control und WebControl abgeleitete benutzerdefinierte Steuerelemente werden in Form kompilierter Klassenbibliotheken bereitgestellt.
Die oben genannten Punkte 1 und 3 werden in dieser Serie nicht erläutert. In dieser Serie werden nur die von Control und WebControl abgeleiteten Serversteuerelemente erläutert.
Wenn wir ein benutzerdefiniertes Steuerelement schreiben möchten, müssen wir nur von Control und WebControl erben. Control hat die IComponent-Schnittstelle implementiert, und WebControl selbst ist von Control abgeleitet, sodass sie auch das visuelle Design von Komponenten unterstützen.
Render-Methode und HtmlTextWriter-Klasse Wenn wir ein Asp.net-Serversteuerelement von einer Control-Klasse ableiten, stellt uns die Control-Klasse einen überladbaren Render und eine Instanz des HtmlTextWriter-Typs zur Verfügung HtmlTextWriter-Objekt und HtmlTextWriter kapseln die Funktion des Schreibens von HTML-Textströmen.
Verwenden des Systems; mit System.Collections.Generic; Verwenden von System.Text;
Namespace ClassLibrary1 { öffentliche Klasse Control1: System.Web.UI.Control { protected override void Render(System.Web.UI.HtmlTextWriter-Writer) { Writer.Write("Ich bin hier."); } }
öffentliche Klasse Control2: System.Web.UI.WebControls.WebControl { protected override void Render(System.Web.UI.HtmlTextWriter-Writer) { Writer.Write("Ich bin auch hier."); } } } |
Im obigen Code definieren wir Control1 und Control2, die jeweils von Control und WebControl erben. Was sind also die wesentlichen Unterschiede zwischen ihnen? Schauen Sie sich zunächst den folgenden Effekt an:
Anhand der oben genannten Effekte ist der Unterschied zwischen ihnen nicht schwer zu erkennen. Die WebControl-Klasse bietet Unterstützung für Stile durch Attribute wie Schriftart, Höhe, Hintergrundfarbe usw. Wann entscheiden wir uns also für die Ableitung von Control und wann für die Ableitung von WebControl? Wenn das Steuerelement nicht-visuelle Elemente generieren oder für Nicht-HTML-Clients anzeigen möchte, wird es von Control abgeleitet, z. B. SqlDataSource. Wenn es dem Client visuelles HTML bereitstellen soll, leiten wir es von WebControl ab, z. B. TextBox .