Saat memprogram dengan ASP.NET, membuka halaman biasanya melibatkan penentuan alamat hyperlink dan memanggil file halaman tertentu (.html, .aspx) dan metode lainnya.
Namun, jika konten file halaman yang akan dibuka dibuat secara dinamis di dalam program atau dikeluarkan dari tabel database, bagaimana cara kami menampilkan konten tersebut?
Ide kami yang paling langsung adalah menyimpan konten ke dalam file halaman web dan kemudian memanggilnya. Cara ini tentu bisa dilakukan, namun bukan cara terbaik karena akan menghasilkan banyak file sementara di server Web yang mungkin tidak akan pernah digunakan.
Cara terbaik lainnya adalah dengan menggunakan aliran format teks untuk menampilkan konten halaman secara dinamis. Misalnya, ada halaman:
…
<iFrame src=""></iframe>
...
Anda perlu menggunakan iFrame untuk membuka halaman, dan konten halaman ini dibuat secara dinamis. Kita dapat menulis file .ashx (bernama html.ashx di sini) untuk diproses. File .ashx mengimplementasikan kelas antarmuka IHttpHandler, yang dapat langsung menghasilkan format data yang digunakan oleh browser.
konten file html.ashx:
<%@ WebHandler Language="C#" Class="Handler" %>
menggunakan Sistem;
menggunakan Sistem.IO;
menggunakan System.Web;
Pengendali kelas publik : IHttpHandler {
public bool IsReusable {
mendapatkan {
kembali benar;
}
}
public void ProcessRequest (konteks HttpContext)
{
// Siapkan pengaturan respons
konteks.Respon.ContentType = "teks/html";
konteks.Respon.Cache.SetCacheability(HttpCacheability.Public);
konteks.Response.BufferOutput = false;
Aliran aliran = null;
string html = "<html><body>Sukses: pengujian txt.ashx</body></html>";
byte[] html2bytes = Sistem.Teks.Encoding.ASCII.GetBytes(html);
aliran = MemoryStream baru(html2bytes)
;
stream = new MemoryStream(System.Text.Encoding.ASCII.GetBytes("<html><body>get Nothing!</body></html>"));
//Menulis aliran teks ke aliran respons
const int ukuran buffer = 1024*16;
byte[] buffer = byte baru[ukuran buffer];
int count = aliran.Baca(buffer, 0, ukuran buffer);
sementara (hitung > 0)
{
konteks.Respon.OutputStream.Write(buffer, 0, hitung);
hitung = aliran.Baca(buffer, 0, ukuran buffer);
}
}
}
Dalam file html.ashx, string terlebih dahulu diubah menjadi array byte, kemudian aliran data MemoryStream di memori dihasilkan, dan terakhir ditulis ke objek OutputStream dan ditampilkan.
Dengan cara ini, kita bisa menampilkan halaman yang dihasilkan secara dinamis melalui <iFrame src="html.ashx"></iframe> dan menampilkan konten halaman web "Sukses: pengujian txt.ashx". Dalam string html = "<html><body>Success: test of txt.ashx</body></html>"; di file html.ashx, konten variabel html dapat diperoleh dari database (put sebuah html terlebih dahulu Isi file disimpan dalam database).
Penulis: Zhang Qing ( http://www.why100000.com )