Darstellen eines ASP.NET-Serversteuerelements
Das Darstellen bezieht sich auf den Prozess des Erstellens einer visuellen Repräsentation auf einer Anzeigeoberfläche. Im Fall von Webanforderungen wird der eigentliche Darstellungsprozess durch den Webbrowser des Clients oder ein anderes Anzeigetool ausgeführt. Die Aufgabe des ASP.NET-Seitenframeworks besteht im Senden von HTML-Code (oder Text in anderen Textauszeichnungssprachen, z. B. XML oder WML) zur Beantwortung einer Webanforderung. Die Aufgabe einer Seite (und ihrer untergeordneten Steuerelemente) besteht darin, den entsprechenden Inhalt in einen Ausgabestream zu schreiben. Zu diesem Zweck stellt die System.Web.UI.Control-Basisklasse die Render-Methode bereit, die folgende Signatur besitzt.
protected virtual void Render(HtmlTextWriter writer);
[Visual Basic]
Overridable Protected Sub Render(ByVal writer As HtmlTextWriter)
Die System.Web.UI.HtmlTextWriter-Klasse kapselt einen Ausgabestream zum Schreiben von Inhalt mit Textauszeichnung ein. Im einfachsten Fall kann der Programmierer eines Steuerelements Render außer Kraft setzen, um den HTML-Code (oder anderen Inhalt mit Textauszeichnung) als Zeichenfolgenargument an die Write-Methode einer Instanz von HtmlTextWriter zu übergeben.
protected override void Render(HtmlTextWriter output) {
output.Write ("<h3> Hello </h3>");
}
[Visual Basic]
Protected Overrides Sub Render(output As HtmlTextWriter)
output.Write("<h3> Hello </h3>")
End Sub
HtmlTextWriter bietet zahlreiche Dienstprogrammmethoden, die das Schreiben in HTML vereinfachen. Sie sollten auf diese Hilfsmittel zurückgreifen, anstatt Textzeichenfolgen direkt an Write zu übergeben, da der Code dadurch besser lesbar und wiederverwendbar wird. (Außerdem bedarf es bei der Entwicklung keiner detaillierten Kenntnisse der HTML-Syntax.) Beispiele für diese Dienstprogrammmethoden finden Sie im Abschnitt zur HtmlTextWriter-Klasse. HtmlTextWriter bietet darüber hinaus eine automatische Konvertierung zwischen verschiedenen Versionen von HTML für die Uplevel- oder Downleveldarstellung.
Es ist effizienter, mehrere Aufrufe an HtmlTextWriter.Write zu senden, als Zeichenfolgen zu verketten und als einzelnes Zeichenfolgenargument an die Write-Methode zu übergeben.
**Hinweis **Zur Vereinfachung werden in verschiedenen Beispielen dieser Dokumentation Textzeichenfolgen direkt an HtmlTextWriter.Write übergeben. Sie sollten jedoch für die Steuerelemente die Dienstprogrammmethoden von HtmlTextWriter verwenden.
Die Control-Basisklasse bietet eine RenderChildren-Methode zur Darstellung von Inhalt aus den ihr untergeordneten Steuerelemente (sofern vorhanden).
protected virtual void RenderChildren(HtmlTextWriter writer);
[Visual Basic]
Overridable Protected Sub RenderChildren(ByVal writer As HtmlTextWriter)
Ein zusammengesetztes Steuerelement kann zusätzlich zum Inhalt der ihm untergeordneten Steuerelemente weiteren Inhalt darstellen, indem dieser Inhalt vor oder nach Aufrufen der RenderChildren-Methode dargestellt wird. Das folgende Codefragment zeigt hierfür ein Beispiel.
public class Composite : Control {
...
protected override void Render(HtmlTextWriter writer) {
writer.Write ("My child controls are rendered below.");
RenderChildren(writer);
writer.Write ("My child controls are rendered above.");
}
}
[Visual Basic]
Public Class Composite
Inherits Control
...
Protected Overrides Sub Render(writer As HtmlTextWriter)
writer.Write("My child controls are rendered below.")
RenderChildren(writer)
writer.Write("My child controls are rendered above.")
End Sub
End Class
Die durch die Control-Basisklasse implementierte Render-Methode ruft immer RenderChildren auf. Wenn Sie die Darstellung eines untergeordneten Steuerelements verhindern möchten, setzen Sie RenderChildren außer Kraft (siehe folgendes Codefragment dargestellt).
protected override void RenderChildren(HtmlTextWriter writer) {
// Do nothing so that child controls are not rendered.
}
[Visual Basic]
Protected Overrides Sub RenderChildren(writer As HtmlTextWriter)
' Do nothing so that child controls are not rendered.
End Sub
Darstellung von Methoden in "WebControl"
Zusätzlich zu den von der Control-Basisklasse bereitgestellten Darstellungsmethoden bietet die System.Web.UI.WebControls.WebControl-Klasse verschiedene andere Methoden zur Vereinfachung der Darstellung.
Die AddAttributesToRender-Methode ermöglicht einem von WebControl abgeleiteten Steuerelement die Festlegung zusätzlicher darzustellender HTML-Attribute und Cascading Stylesheets. Das folgende Beispiel demonstriert, wie ein Schaltflächensteuerelement seine Attribute in den Ausgabestream schreiben kann. Achten Sie auf den Aufruf an base.AddAttributestoRender, der sicherstellt, dass die von der Basisklasse dargestellten Attribute erhalten bleiben.
protected override void AddAttributesToRender(HtmlTextWriter writer) {
writer.AddAttribute(HtmlTextWriterAttribute.Type, "submit");
writer.AddAttribute(HtmlTextWriterAttribute.Name, UniqueID);
writer.AddAttribute(HtmlTextWriterAttribute.Value, Text);
base.AddAttributesToRender(writer);
}
[Visual Basic]
Protected Overrides Sub AddAttributesToRender(writer As HtmlTextWriter)
writer.AddAttribute(HtmlTextWriterAttribute.Type, "submit")
writer.AddAttribute(HtmlTextWriterAttribute.Name, UniqueID)
writer.AddAttribute(HtmlTextWriterAttribute.Value, [Text])
MyBase.AddAttributesToRender(writer)
End Sub
Die Methoden RenderBeginTag und RenderEndTag ermöglichen es einem von WebControl abgeleiteten Steuerelement, das Anfangstag und das Endtag eines HTML-Elements außer Kraft zu setzen. Die RenderContents-Methode ermöglicht es einem Steuerelement, den Inhalt zwischen diesen Tags festzulegen.
Hinweis Zum Schreiben von Text in den Ausgabestream eines Webserversteuerelements (eine von WebControl abgeleitete Klasse) sollten Sie die RenderContents-Methode außer Kraft setzen, anstatt die Render-Methode direkt außer Kraft zu setzen. Damit wird sichergestellt, dass die von WebControl implementierte Darstellungsfunktionalität (z. B. die Attributausgabe) erhalten bleibt. Einzelheiten dazu finden Sie unter Beispiele für die Darstellung eines Serversteuerelements.
Siehe auch
Beibehalten des Status in einem Steuerelement | Beispiele für die Darstellung eines Serversteuerelements