ผู้แต่ง: Builder, Tony Patton
แม้ว่า ASP.NET จะมีแพลตฟอร์มที่ทรงพลัง แต่นักพัฒนาก็ไม่ควรละเลยเทคโนโลยีที่เป็นผู้ใหญ่ เช่น JavaScript ในบทความนี้โทนี่
Patton อธิบายวิธีการรวม JavaScript เข้ากับการควบคุม ASP.NET ในการพัฒนาเว็บ
แม้ว่าแพลตฟอร์มการพัฒนาเว็บจะให้ความยืดหยุ่นและคุณสมบัติมากมาย แต่คุณมักจะต้องการหรือจำเป็นต้องพึ่งพาเทคโนโลยีที่มีอยู่เพื่อทำงานที่จำเป็นให้สำเร็จ ตัวอย่างที่ดีคือ ASP.NET ซึ่งมีแพลตฟอร์มการพัฒนาที่ทรงพลัง แต่ในขณะเดียวกันเทคโนโลยีที่เป็นผู้ใหญ่เช่น JavaScript ไม่ควรมองข้ามเช่นกัน ในบทความนี้ ผมจะอธิบายวิธีเชื่อมต่อโค้ด JavaScript กับตัวควบคุม ASP.NET
วิธีธรรมดา
โดยทั่วไป เมื่อแอปพลิเคชันเว็บต้องการหน้าต่างป๊อปอัปหรือหน้าต่างยืนยันหรือฟังก์ชันฝั่งไคลเอ็นต์อื่นๆ คุณจะสร้างวิธีการ JavaScript ที่จำเป็นและเรียกใช้เมื่อจำเป็น ตัวอย่างเช่น รายการ A มีหน้าต่างยืนยันที่ผู้ใช้สามารถใช้เพื่อดำเนินการต่อหรือยกเลิกการส่งแบบฟอร์ม
หลังจากเลือกปุ่มส่งแล้ว ระบบจะเรียกเมธอด ConfirmSubmit ของ JavaScript เพื่อให้ผู้ใช้สามารถดำเนินการส่งแบบฟอร์มต่อไปได้ (เลือกยืนยัน) หรือยกเลิก (เลือกยกเลิก)
โค้ดข้างต้นทำงานได้ตามที่วางแผนไว้ แต่ก็ไม่ง่ายนักเมื่อทำงานบนแพลตฟอร์มการพัฒนา เช่น ASP.NET
ตัวเลือกการแทนที่สำหรับ ASP.NET
ASP.NET รองรับการใช้องค์ประกอบ HTML เช่น ปุ่มป้อนข้อมูลและกล่องข้อความ แต่มีชุดองค์ประกอบควบคุมครบชุดที่ให้ฟังก์ชันการทำงานเพิ่มเติมตามรูปแบบการพัฒนาของ ASP.NET เอง
การแนบ JavaScript เข้ากับ ASP.NET นั้นไม่ง่ายเหมือนกับวิธีโดยตรงของ HTML/JavaScript รูปแบบการเขียนโปรแกรม ASP.NET ให้วิธีการในคลาสเพจพื้นฐานเพื่อแนบบล็อกสคริปต์กับองค์ประกอบของหน้า วิธีการต่อไปนี้สามารถใช้เพื่อแนบหรือรวม JavaScript เข้ากับหน้าหรือองค์ประกอบของหน้า:
ล
RegisterClientScriptBlock: อนุญาตให้เพจของคุณมีบล็อกสคริปต์ สคริปต์ฝั่งไคลเอ็นต์ในวัตถุเพจ <form
รูนาท=
มันเริ่มทำงานหลังจากแท็กเปิดขององค์ประกอบ server> บล็อกสคริปต์ส่งเอาต์พุตเป็นออบเจ็กต์ ดังนั้นคุณต้องเพิ่มแท็กองค์ประกอบ <script> สองแท็ก
ล
RegisterOnSubmitStatement: อนุญาตให้คุณกำหนดบล็อกสคริปต์/วิธีการให้กับเหตุการณ์ OnSubmit ของออบเจ็กต์เพจ
ล
RegisterStartupScript: อนุญาตให้คุณรวมบล็อกสคริปต์ในหน้า คล้ายกับวิธี RegisterClientScriptBlock วิธีการนี้อยู่ในวัตถุหน้า <form
รูนาท=
ทำงานก่อนแท็กปิดขององค์ประกอบ server> บล็อกสคริปต์จะส่งเอาต์พุตเป็นออบเจ็กต์ ดังนั้นคุณต้องเพิ่มแท็กองค์ประกอบ <script> สองแท็ก
แต่ละวิธีสามารถรับพารามิเตอร์ได้ 2 แบบ ได้แก่ คีย์และสคริปต์ คีย์คือชื่อที่กำหนดให้กับบล็อกสคริปต์ โดยค่าคีย์ที่ไม่ซ้ำกันนี้ทำให้อินสแตนซ์ที่ควบคุมโดยเซิร์ฟเวอร์หลายรายการสามารถร้องขอบล็อกสคริปต์ได้ รันสคริปต์อีกครั้งบนสตรีมเอาต์พุต สคริปต์พารามิเตอร์ตัวที่สองประกอบด้วยสคริปต์จริงที่ส่งไปยังไคลเอนต์ ซึ่งอาจเป็นโค้ด JavaScript ที่สมบูรณ์หรือชื่อของวิธีการ
วิธีการเหล่านี้สามารถใช้ได้ในโค้ดเพจ ASP.NET จริง ไม่ว่าจะเป็น VB.NET, C#, J# หรือภาษาอื่นๆ รายการ B จะแสดงโค้ดตัวอย่าง ASP.NET ที่เขียนด้วย C#
เมธอด JavaScript ถูกสร้างขึ้นผ่านตัวแปรสตริง ค่าของมันจะถูกส่งผ่านไปยังเมธอด RegisterClientScriptBlock เป็นอาร์กิวเมนต์ที่สอง และชื่อเมธอดจริงจะถูกส่งผ่านแอตทริบิวต์ของอ็อบเจ็กต์
วิธีการเพิ่มของคุณสมบัติถูกกำหนดให้กับตัวควบคุมปุ่ม ASP.NET เหตุการณ์ JavaScript ถูกส่งผ่านเป็นพารามิเตอร์แรก และชื่อวิธีการคือพารามิเตอร์ที่สอง
นอกจากนี้ คุณอาจสังเกตเห็นการใช้วิธี IsStartupScriptRegistered ซึ่งช่วยให้คุณยืนยันว่าสคริปต์ได้รับการลงทะเบียนแล้วก่อนที่จะใช้งานต่อไป มีสองวิธีสำหรับปัญหานี้:
ล
IsStartupScriptRegistered: ยืนยันว่าสคริปต์เริ่มต้นของไคลเอ็นต์ได้รับการลงทะเบียนบนออบเจ็กต์เพจหรือไม่ พารามิเตอร์เดียวคือชื่อของสคริปต์
ล
IsClientScriptBlockRegistered: ยืนยันว่าบล็อกสคริปต์ของลูกค้าได้รับการลงทะเบียนบนออบเจ็กต์เพจหรือไม่ พารามิเตอร์เดียวคือชื่อของสคริปต์
อีกวิธีในการแก้ปัญหาคือการใช้เมธอด RegisterOnSubmitStatement ของคลาสเพจ รายการ C จะทำซ้ำฟังก์ชันของรายการ B แต่ข้อแตกต่างคือเมธอด ConfirmSubmit เชื่อมต่อกับเหตุการณ์การส่งของเพจแทนที่จะเป็นเหตุการณ์การคลิกของ ปุ่ม.
ตัวอย่างง่ายๆ นี้แสดงให้เห็นอย่างชัดเจนถึงวิธีการรวมบล็อกสคริปต์ JavaScript และสคริปต์ JavaScript ลงในตัวควบคุมบนเพจ ASP.NET ถ้าคุณใช้ตัวควบคุม ASP.NET วิธีการนี้สามารถช่วยให้คุณแนบสคริปต์กับตัวควบคุมเหล่านั้นได้ แต่คุณยังสามารถใช้วิธีการลงทะเบียนได้ เพื่อรวมศูนย์ JavaScript ของโครงการ คุณสามารถสร้างไฟล์คลาสที่มีสคริปต์และใช้งานในหน้าต่างๆ ได้ตามต้องการ ด้วยวิธีนี้ คุณเพียงแค่ต้องจัดการสคริปต์ในที่เดียวและใช้งานในหน้าเดียวหรือหลายหน้าในแอปพลิเคชันก็จะง่ายขึ้น
การผสมผสานระหว่างเก่าและใหม่ ไม่ว่าคุณจะใช้แพลตฟอร์มการพัฒนาแบบใด คุณไม่น่าจะเลิกใช้ JavaScript เป็นภาษาสคริปต์ฝั่งไคลเอ็นต์ได้ JavaScript เป็นมาตรฐานสำหรับการพัฒนาฟังก์ชันฝั่งไคลเอ็นต์ ฟังก์ชั่นจำนวนมาก หลายครั้งที่คุณยังคง JavaScript จำเป็นต้อง "แต่งงาน" กับการควบคุมเหล่านี้ โชคดีที่คลาสเพจ ASP.NET มีวิธีการมากมายในการรวมบล็อกสคริปต์และวิธีการเข้ากับเพจและการควบคุม