Lors de la programmation avec ASP.NET, l'ouverture d'une page implique généralement de spécifier une adresse de lien hypertexte et d'appeler le fichier de page spécifié (.html, .aspx) et d'autres méthodes.
Cependant, si le contenu du fichier d'échange qui est sur le point d'être ouvert est généré dynamiquement dans le programme ou extrait de la table de la base de données, comment afficher le contenu ?
Notre idée la plus directe est de sauvegarder le contenu dans un fichier de page Web, puis de l'appeler. Cette méthode est certes possible, mais ce n'est pas la meilleure méthode car elle générera de nombreux fichiers temporaires sur le serveur Web qui risquent de ne jamais être utilisés.
Un autre meilleur moyen consiste à utiliser le flux de format de texte pour afficher dynamiquement le contenu de la page. Par exemple, il y a une page :
…
<iFrame src=""></iframe>
...
Vous devez utiliser iFrame pour ouvrir une page, et le contenu de cette page est généré dynamiquement. Nous pouvons écrire un fichier .ashx (nommé ici html.ashx) à traiter. Le fichier .ashx implémente la classe d'interface IHttpHandler, qui peut générer directement le format de données utilisé par le navigateur.
Contenu du fichier html.ashx :
<%@ WebHandler Language="C#" Class="Handler" %>
utilisant System ;
en utilisant System.IO ;
en utilisant System.Web ;
gestionnaire de classe publique : IHttpHandler {
public bool IsReusable {
obtenir {
renvoie vrai ;
}
}
public void ProcessRequest (contexte HttpContext)
{
// Configure les paramètres de réponse
contexte.Response.ContentType = "text/html";
contexte.Response.Cache.SetCacheability(HttpCacheability.Public);
context.Response.BufferOutput = false;
Stream stream = null;
string html = "<html><body>Succès : test de txt.ashx</body></html>" ;
byte[] html2bytes = System.Text.Encoding.ASCII.GetBytes(html);
stream
= new MemoryStream(html2bytes);
stream = new MemoryStream(System.Text.Encoding.ASCII.GetBytes("<html><body>get Nothing!</body></html>"));
//Écrire un flux de texte dans le flux de réponse
const int taille du tampon = 1024 * 16 ;
byte[] buffer = new byte[buffersize];
int count = stream.Read(buffer, 0, buffersize);
pendant que (compte > 0)
{
context.Response.OutputStream.Write(buffer, 0, count);
count = stream.Read(buffer, 0, buffersize);
}
}
}
Dans le fichier html.ashx, la chaîne est d'abord convertie en tableau d'octets, puis le flux de données MemoryStream en mémoire est généré, et enfin écrit dans l'objet OutputStream et affiché.
De cette façon, nous pouvons afficher la page générée dynamiquement via <iFrame src="html.ashx"></iframe> et afficher le contenu de la page Web de "Succès : test de txt.ashx". Dans la chaîne html = "<html><body>Succès : test de txt.ashx</body></html>" ; dans le fichier html.ashx, le contenu de la variable html peut être obtenu depuis la base de données (mettre un html à l'avance (le contenu du fichier est enregistré dans la base de données).
Auteur : Zhang Qing ( http://www.why100000.com )