ASP.NET WEB FORMS ช่วยให้นักพัฒนามีรูปแบบการพัฒนาที่ขับเคลื่อนด้วยเหตุการณ์ที่ยอดเยี่ยม อย่างไรก็ตาม รูปแบบการพัฒนาแอปพลิเคชันแบบธรรมดานี้ทำให้เราเกิดปัญหาเล็กๆ น้อยๆ บางอย่าง เช่น ในแอปพลิเคชัน ASP แบบดั้งเดิม คุณสามารถถ่ายโอนค่าหรือหลายค่าจากเพจหนึ่งๆ ได้อย่างง่ายดายผ่านวิธี POST request.form()/request.querystring()) การนำไปใช้ใน ASP.NET โดยใช้วิธีเดียวกันจะยุ่งยากเล็กน้อย ต่อไปนี้เป็นวิธีอื่นๆ ในการแก้ไขสถานการณ์นี้ ASP.NET มีสามวิธีให้เรา วิธีแรกคือใช้ QueryString เพื่อส่งค่าที่สอดคล้องกัน วิธีที่สองคือส่งค่าที่สอดคล้องกันผ่านตัวแปรเซสชัน และวิธีอื่นคือนำไปใช้ผ่านเมธอด Server.Transfer
1. ใช้สตริงการสืบค้น
สตริงการสืบค้นเป็นวิธีที่ง่ายมากในการส่งค่า ข้อเสียคือ ค่าที่จะส่งจะแสดงในแถบที่อยู่ของเบราว์เซอร์ และไม่สามารถส่งออบเจ็กต์ด้วยวิธีนี้ได้ วิธีนี้เหมาะที่สุดหากคุณต้องการส่งผ่านค่าที่ไม่สำคัญเกินไปหรือเป็นค่าธรรมดา ลองใช้ตัวอย่างเล็กๆ น้อยๆ เพื่อดำเนินการโอนค่าให้เสร็จสิ้น โดยมีขั้นตอนดังนี้
1. สร้างเว็บฟอร์ม
2. วางปุ่ม 1 ในรูปแบบเว็บใหม่และสอง TextBox1 และ TextBox2
3. สร้างโค้ดเหตุการณ์การคลิกสำหรับปุ่มปุ่มดังนี้:
โมฆะส่วนตัว button_click (ผู้ส่งวัตถุ System.EventArgs e)
-
URL สตริง;
url="webform2.aspx?name="+TextBox1.Text + "&อีเมล="+TextBox2.Text;
การตอบสนองการเปลี่ยนเส้นทาง (url);
-
4. สร้างเพจเป้าหมายใหม่และตั้งชื่อเป็น webform2
5. วางสอง Label1 และ Label2 ใน webform2
เพิ่มรหัสต่อไปนี้ใน Page_Load ของ webform2:
โมฆะส่วนตัว Page_Load (ผู้ส่งวัตถุ System.EventArgs e)
-
Label1.Text=Request.QueryString["ชื่อ"];
Label2.Text=Request.QueryString["อีเมล"];
-
เรียกใช้แล้วคุณจะเห็นผลลัพธ์หลังการถ่ายโอน
2. ใช้ตัวแปร Session การใช้ตัวแปร Session เพื่อส่งผ่านค่าเป็นวิธีที่พบได้บ่อยที่สุด วิธีนี้ไม่เพียงแต่สามารถส่งผ่านค่าไปยังหน้าถัดไปได้ แต่ยังส่งผ่านไปยังหลาย ๆ หน้าได้จนกว่าค่าของตัวแปร Session จะเป็น ตัวแปรจะหายไป ยกตัวอย่าง:
1. สร้างเว็บฟอร์ม
2. วางปุ่ม 1 ในรูปแบบเว็บใหม่และสอง TextBox1 และ TextBox2
3. สร้างโค้ดเหตุการณ์การคลิกสำหรับปุ่มปุ่มดังนี้:
โมฆะส่วนตัว button_click (ผู้ส่งวัตถุ System.EventArgs e)
-
เซสชัน["ชื่อ"]=TextBox1.Text;
เซสชัน["อีเมล"]=TextBox2.Text;
Response.Redirect("webform2.aspx");
-
4. สร้างเพจเป้าหมายใหม่และตั้งชื่อเป็น webform2
5. วางสอง Label1 และ Label2 ใน webform2
เพิ่มรหัสต่อไปนี้ใน Page_Load ของ webform2:
โมฆะส่วนตัว Page_Load (ผู้ส่งวัตถุ System.EventArgs e)
-
Label1.Text=เซสชัน["ชื่อ"].ToString();
Label2.Text=เซสชัน["อีเมล"].ToString();
Session.Remove("ชื่อ");
Session.Remove("อีเมล");
-
เรียกใช้แล้วคุณจะเห็นผลลัพธ์หลังการถ่ายโอน
3. ใช้เซิร์ฟเวอร์ถ่ายโอน
แม้ว่าวิธีนี้จะซับซ้อนเล็กน้อย แต่ก็ยังเป็นวิธีส่งผ่านค่าบนเพจ
ยกตัวอย่าง:
1. สร้างเว็บฟอร์ม
2. วางปุ่ม 1 ในรูปแบบเว็บใหม่และสอง TextBox1 และ TextBox2
3. สร้างโค้ดเหตุการณ์การคลิกสำหรับปุ่มปุ่มดังนี้:
โมฆะส่วนตัว (ผู้ส่งวัตถุ System.EventArgs e)
-
เซิร์ฟเวอร์โอน("webform2.aspx");
-
4. สร้างกระบวนการเพื่อส่งกลับรหัสค่าของตัวควบคุม TextBox1 และ TextBox2 ดังนี้:
ชื่อสตริงสาธารณะ
-
รับ {return TextBox1.Text;}
-
อีเมลสตริงสาธารณะ
-
รับ {return TextBox2.Text;}
-
5. สร้างเพจเป้าหมายใหม่ชื่อ webform2
6. วางสอง Label1 และ Label2 ใน webform2
เพิ่มรหัสต่อไปนี้ใน Page_Load ของ webform2:
โมฆะส่วนตัว Page_load (ผู้ส่งวัตถุ System.EventArgs e)
-
//สร้างอินสแตนซ์ของเว็บฟอร์ม
เว็บฟอร์ม1 wf1;
//รับตัวจัดการอินสแตนซ์
wf1=(webform1)บริบท.ตัวจัดการ;
Label1.Text=wf1.ชื่อ;
Label2.Text=wf1.อีเมล;
-
ทั้งสามวิธีนี้เป็นเรื่องธรรมดา