เมื่อเขียนโปรแกรมด้วย ASP.NET การเปิดเพจมักจะเกี่ยวข้องกับการระบุที่อยู่ไฮเปอร์ลิงก์และการเรียกไฟล์เพจที่ระบุ (.html, .aspx) และวิธีอื่นๆ
อย่างไรก็ตาม หากเนื้อหาของไฟล์เพจที่กำลังจะเปิดนั้นถูกสร้างขึ้นแบบไดนามิกในโปรแกรมหรือนำออกจากตารางฐานข้อมูล เราจะแสดงเนื้อหาได้อย่างไร
แนวคิดที่ตรงที่สุดของเราคือการบันทึกเนื้อหาลงในไฟล์หน้าเว็บแล้วเรียกมัน วิธีนี้เป็นไปได้อย่างแน่นอน แต่ไม่ใช่วิธีที่ดีที่สุด เนื่องจากจะสร้างไฟล์ชั่วคราวจำนวนมากบนเว็บเซิร์ฟเวอร์ที่อาจไม่เคยใช้
วิธีที่ดีที่สุดอีกวิธีหนึ่งคือการใช้โฟลว์รูปแบบข้อความเพื่อแสดงเนื้อหาของเพจแบบไดนามิก เช่น มีเพจ:
…
<iFrame src=""></iframe>
...
คุณต้องใช้ iFrame เพื่อเปิดเพจ และเนื้อหาของเพจนี้จะถูกสร้างขึ้นแบบไดนามิก เราสามารถเขียนไฟล์ .ashx (ชื่อ html.ashx ที่นี่) เพื่อประมวลผลได้ ไฟล์ .ashx ใช้คลาสอินเทอร์เฟซ IHttpHandler ซึ่งสามารถสร้างรูปแบบข้อมูลที่เบราว์เซอร์ใช้ได้โดยตรง
เนื้อหาไฟล์ html.ashx:
<%@ WebHandler Language="C#" Class="Handler" %>
โดยใช้ระบบ;
ใช้ System.IO;
ใช้ System.Web;
ตัวจัดการคลาสสาธารณะ: IHttpHandler {
บูลสาธารณะ IsReusable {
รับ {
กลับเป็นจริง;
-
}
สาธารณะเป็นโมฆะ ProcessRequest (บริบท HttpContext)
-
// ตั้งค่าการตั้งค่าการตอบสนอง
context.Response.ContentType = "ข้อความ/html";
บริบท.Response.Cache.SetCacheability (HttpCacheability.Public);
context.Response.BufferOutput = false;
สตรีมสตรีม = null;
string html = "<html><body>ความสำเร็จ: ทดสอบ txt.ashx</body></html>";
ไบต์ [] html2bytes = System.Text.Encoding.ASCII.GetBytes (html);
สตรีม = MemoryStream ใหม่ (html2bytes);
ถ้า (สตรีม == null)
stream = new MemoryStream(System.Text.Encoding.ASCII.GetBytes("<html><body>get Nothing!</body></html>"));
//เขียนสตรีมข้อความไปยังสตรีมตอบกลับ
ขนาดบัฟเฟอร์ const int = 1,024 * 16;
ไบต์ [] บัฟเฟอร์ = ไบต์ใหม่ [ขนาดบัฟเฟอร์];
int count = stream.Read (บัฟเฟอร์, 0, ขนาดบัฟเฟอร์);
ในขณะที่ (นับ > 0)
-
context.Response.OutputStream.Write (บัฟเฟอร์, 0, นับ);
count = stream.Read (บัฟเฟอร์, 0, ขนาดบัฟเฟอร์);
-
}
}
ในไฟล์ html.ashx สตริงจะถูกแปลงเป็นอาร์เรย์ไบต์ก่อน จากนั้นสตรีมข้อมูล MemoryStream ในหน่วยความจำจะถูกสร้างขึ้น และสุดท้ายจะเขียนลงในออบเจ็กต์ OutputStream และแสดงผล
ด้วยวิธีนี้ เราสามารถแสดงเพจที่สร้างขึ้นแบบไดนามิกผ่าน <iFrame src="html.ashx"></iframe> และแสดงเนื้อหาหน้าเว็บของ "Success: test of txt.ashx" ในสตริง html = "<html><body>Success: test of txt.ashx</body></html>"; ในไฟล์ html.ashx เนื้อหาของตัวแปร html สามารถรับได้จากฐานข้อมูล (put html ล่วงหน้า เนื้อหาไฟล์จะถูกบันทึกลงในฐานข้อมูล)
ผู้แต่ง: จางชิง ( http://www.why100000.com )