Volle Kontrolle über das in ASP.NET ausgegebene HTML

Während man mit PHP oder dem “klassischen” ASP selbst Herr über jedes an den Browser gesendete Byte ist, übernimmt bei ASP.NET das System die Kontrolle über den Output. Das kommt in den meisten Fällen dem Programmierer entgegen, weil er bequem am Bildschirm Eingabeelemente zusammenstellen und positionieren kann, statt mit HTML-Tags jonglieren zu müssen.

In manchen Fällen möchte man aber wieder die volle Kontrolle über jedes an den Browser ausgegebene Byte bekommen. Das gilt etwa dann, wenn das ASP.NET-Skript einen Datensatz erzeugen soll, der den Input für eine andere Webanwendung darstellt.

Hierfür ist ein tiefer Eingriff in die inneren Abläufe der HTML-Erzeugung von ASP.NET notwendig, der allerdings glücklicherweise wenig Aufwand erfordert.

Dazu ersetzt man die Render-Methode des Seitenobjekts mit einem leeren Rumpf. Render() sorgt normalerweise dafür, dass alle definierten Seitenelemente in ihrer HTML-Entsprechung ausgegeben werden. Durch die eigene Version von Render, die gar nichts tut, wird der gesamte Mechanismus zur HTML-Erzeugung ausgehebelt.

Der Code für VB.NET

Protected Overrides Sub Render(ByVal writer As HtmlTextWriter)

‘ hier passiert absichtlich nichts!

End Sub

Um nun die eigenen Zeichenketten an den Browser zu senden, verwendet man am besten die Subroutine Page_Load und gibt dort die Strings fast so aus, wie in alten ASP-Zeiten:

Response.Write(“Volle Ausgabe-Kontrolle!”)

Der Code für C#

private void Page_Load(object sender, System.EventArgs e)

{

Response.Write(“Volle Ausgabekontrolle!”);

}

// Render-Methode überschreiben um Ausgabe selbst in die Hand nehmen zu können

protected override void Render(HtmlTextWriter writer)

{

// hier passiert absichtlich nichts

}

Ähnliche Beiträge