Beim Programmieren mit ASP.NET umfasst das Öffnen einer Seite normalerweise die Angabe einer Hyperlink-Adresse und den Aufruf der angegebenen Seitendatei (.html, .aspx) und anderer Methoden.
Wenn jedoch der Inhalt der Auslagerungsdatei, die geöffnet werden soll, dynamisch im Programm generiert oder aus der Tabelle der Datenbank entnommen wird, wie zeigen wir den Inhalt an?
Unsere direkteste Idee besteht darin, den Inhalt in einer Webseitendatei zu speichern und sie dann aufzurufen. Diese Methode ist sicherlich möglich, aber nicht die beste, da dadurch viele temporäre Dateien auf dem Webserver generiert werden, die möglicherweise nie verwendet werden.
Eine weitere beste Möglichkeit besteht darin, den Textformatfluss zu verwenden, um Seiteninhalte dynamisch anzuzeigen. Es gibt zum Beispiel eine Seite:
…
<iFrame src=""></iframe>
...
Sie müssen iFrame verwenden, um eine Seite zu öffnen, und der Inhalt dieser Seite wird dynamisch generiert. Wir können eine .ashx-Datei (hier html.ashx genannt) zur Verarbeitung schreiben. Die .ashx-Datei implementiert die Schnittstellenklasse IHttpHandler, die das vom Browser verwendete Datenformat direkt generieren kann.
Inhalt der Datei html.ashx:
<%@ WebHandler Language="C#" Class="Handler" %>
using System;
mit System.IO;
using System.Web;
öffentlicher Klassenhandler: IHttpHandler {
public bool IsReusable {
erhalten {
return true;
}
}
public void ProcessRequest (HttpContext-Kontext)
{
// Richten Sie die Antworteinstellungen ein
context.Response.ContentType = "text/html";
context.Response.Cache.SetCacheability(HttpCacheability.Public);
context.Response.BufferOutput = false;
Stream stream = null;
string html = "<html><body>Erfolg: Test von txt.ashx</body></html>";
byte[] html2bytes = System.Text.Encoding.ASCII.GetBytes(html);
stream = new MemoryStream(html2bytes);
if (stream == null)
stream = new MemoryStream(System.Text.Encoding.ASCII.GetBytes("<html><body>get Nothing!</body></html>"));
//Textstrom in den Antwortstrom schreiben
const int buffersize = 1024 * 16;
byte[] buffer = new byte[buffersize];
int count = stream.Read(buffer, 0, buffersize);
while (Anzahl > 0)
{
context.Response.OutputStream.Write(buffer, 0, count);
count = stream.Read(buffer, 0, buffersize);
}
}
}
In der Datei html.ashx wird die Zeichenfolge zunächst in ein Byte-Array konvertiert, dann der MemoryStream-Datenstrom im Speicher generiert und schließlich in das OutputStream-Objekt geschrieben und angezeigt.
Auf diese Weise können wir die dynamisch generierte Seite über <iFrame src="html.ashx"></iframe> anzeigen und den Webseiteninhalt von „Erfolg: Test von txt.ashx“ anzeigen. In der Zeichenfolge html = „<html><body>Success: test of txt.ashx</body></html>“ in der Datei html.ashx kann der Inhalt der Variablen html aus der Datenbank abgerufen werden (put ein html im Voraus Der Dateiinhalt wird in der Datenbank gespeichert).
Autor: Zhang Qing ( http://www.why100000.com )