Ao programar com ASP.NET, abrir uma página geralmente envolve a especificação de um endereço de hiperlink e a chamada do arquivo de página especificado (.html, .aspx) e outros métodos.
Porém, se o conteúdo do arquivo de paginação que está prestes a ser aberto for gerado dinamicamente no programa ou retirado da tabela do banco de dados, como exibimos o conteúdo?
Nossa ideia mais direta é salvar o conteúdo em um arquivo de página da web e depois chamá-lo. Este método é certamente possível, mas não é o melhor método porque irá gerar muitos arquivos temporários no servidor Web que nunca poderão ser usados.
Outra melhor maneira é usar o fluxo de formato de texto para exibir dinamicamente o conteúdo da página. Por exemplo, existe uma página:
…
<iFrame src=""></iframe>
...
Você precisa usar o iFrame para abrir uma página, e o conteúdo desta página é gerado dinamicamente. Podemos escrever um arquivo .ashx (chamado html.ashx aqui) para processar. O arquivo .ashx implementa a classe de interface IHttpHandler, que pode gerar diretamente o formato de dados usado pelo navegador.
conteúdo do arquivo html.ashx:
<%@ WebHandler Language="C#" Class="Handler" %>
using System;
usando System.IO;
usando System.Web;
manipulador de classe pública: IHttpHandler {
public bool IsReusable {
pegar {
retornar verdadeiro;
}
}
public void ProcessRequest (contexto HttpContext)
{
//Definir as configurações de resposta
context.Response.ContentType = "texto/html";
context.Response.Cache.SetCacheability(HttpCacheability.Public);
context.Response.BufferOutput = false;
Stream stream = null;
string html = "<html><body>Sucesso: teste 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>"));
//Escrever fluxo de texto no fluxo de resposta
const int tamanho do buffer = 1024 * 16;
byte[] buffer = novo byte[buffersize];
contagem int = stream.Read(buffer, 0, buffersize);
enquanto (contagem> 0)
{
context.Response.OutputStream.Write(buffer, 0, contagem);
contagem = stream.Read(buffer, 0, buffersize);
}
}
}
No arquivo html.ashx, a string é primeiro convertida em uma matriz de bytes, depois o fluxo de dados MemoryStream na memória é gerado e, finalmente, gravado no objeto OutputStream e exibido.
Desta forma, podemos exibir a página gerada dinamicamente por meio de <iFrame src="html.ashx"></iframe> e exibir o conteúdo da página web de "Sucesso: teste de txt.ashx". Na string html = "<html><body>Success: test of txt.ashx</body></html>"; no arquivo html.ashx, o conteúdo da variável html pode ser obtido do banco de dados (colocado). um html com antecedência O conteúdo do arquivo é salvo no banco de dados).
Autor: Zhang Qing ( http://www.why100000.com )