ตัวควบคุมเป็นบล็อกการทำงานขนาดเล็กในส่วนติดต่อผู้ใช้แบบกราฟิกที่ประกอบด้วยกล่องข้อความ ปุ่ม กล่องกาเครื่องหมาย กล่องรายการ ป้ายชื่อ และเครื่องมืออื่นๆ มากมาย การใช้เครื่องมือเหล่านี้ ผู้ใช้สามารถป้อนข้อมูล ทำการเลือก และระบุการตั้งค่าของตนเองได้
การควบคุมยังใช้สำหรับงานโครงสร้าง เช่น การตรวจสอบ การเข้าถึงข้อมูล การรักษาความปลอดภัย การสร้างเพจหลัก และการจัดการข้อมูล
ASP.NET ใช้การควบคุมเว็บห้าประเภท ได้แก่:
การควบคุม HTML
การควบคุมเซิร์ฟเวอร์ HTML
การควบคุมเซิร์ฟเวอร์ ASP.NET
การควบคุมเซิร์ฟเวอร์ ASP.NET Ajax
การควบคุมผู้ใช้และการควบคุมแบบกำหนดเอง
การควบคุมเซิร์ฟเวอร์ ASP.NET เป็นการควบคุมหลักที่ใช้ใน ASP.NET การควบคุมเหล่านี้สามารถแบ่งออกเป็นประเภทต่างๆ ดังต่อไปนี้:
การควบคุมการตรวจสอบ - ใช้เพื่อตรวจสอบอินพุตของผู้ใช้และทำงานโดยการรันสคริปต์ฝั่งไคลเอ็นต์
การควบคุมแหล่งข้อมูล - ให้ความสามารถในการผูกข้อมูลกับแหล่งข้อมูลต่างๆ
การควบคุมมุมมองข้อมูล - การควบคุมนี้เป็นรายการและตารางที่หลากหลายซึ่งสามารถแสดงข้อมูลที่ผูกไว้จากแหล่งข้อมูลได้
การควบคุมการตั้งค่าส่วนบุคคล - ปรับแต่งเพจตามข้อมูลผู้ใช้ตามความต้องการของผู้ใช้
การควบคุมการเข้าสู่ระบบและความปลอดภัย - ให้การรับรองความถูกต้องของผู้ใช้
มาสเตอร์เพจ - ให้เค้าโครงและอินเทอร์เฟซที่สอดคล้องกันทั่วทั้งแอปพลิเคชัน
การควบคุมการนำทาง - ช่วยให้ผู้ใช้นำทาง เช่น เมนู มุมมองแบบต้นไม้ เป็นต้น
การควบคุมฟังก์ชั่นที่หลากหลาย - ใช้ฟังก์ชั่นพิเศษ ตัวอย่างเช่น การควบคุม AdRotator, FileUpload และ Calendar
ไวยากรณ์พื้นฐานสำหรับการใช้การควบคุมเซิร์ฟเวอร์คือ:
<asp:controlType ID ="ControlID" runat="server" Property1=value1 [Property2=value2] />
นอกจากนี้ Visual Studio ยังมีคุณลักษณะต่อไปนี้เพื่อช่วยสร้างโค้ดที่ปราศจากข้อผิดพลาด:
ลากและวางตัวควบคุมในมุมมองออกแบบ
ความสามารถ IntelliSense สำหรับคุณสมบัติการแสดงผลและการเติมข้อความอัตโนมัติ
หน้าต่างคุณสมบัติสำหรับตั้งค่าคุณสมบัติโดยตรง
ตัวควบคุมเซิร์ฟเวอร์ ASP.NET ที่มีความสามารถด้านภาพได้มาจากคลาส WebControl และสืบทอดคุณสมบัติ เหตุการณ์ และวิธีการทั้งหมดของคลาสนี้
คลาส WebControl เองและการควบคุมเซิร์ฟเวอร์อื่นๆ ที่ไม่มีความสามารถด้านการมองเห็นนั้นได้มาจากคลาส System.Web.UI.Control ตัวอย่างเช่น ตัวควบคุม PlaceHolder หรือตัวควบคุม XML
ตัวควบคุมเซิร์ฟเวอร์ ASP.Net สืบทอดคุณสมบัติ เหตุการณ์ และวิธีการทั้งหมดของคลาส WebControl และ System.Web.UI.Control
ตารางต่อไปนี้แสดงคุณสมบัติทั่วไปสำหรับการควบคุมเซิร์ฟเวอร์ทั้งหมด:
คุณสมบัติ | อธิบาย |
---|---|
คีย์การเข้าถึง | กดปุ่มนี้และปุ่ม Alt พร้อมกันเพื่อย้ายโฟกัสไปที่ส่วนควบคุม |
คุณสมบัติ | เป็นชุดของคุณสมบัติที่กำหนดเองซึ่งไม่สอดคล้องกับคุณสมบัติการควบคุม (ใช้สำหรับการแสดงผลมุมมองเท่านั้น) |
กลับสี | สีพื้นหลัง. |
การผูกคอนเทนเนอร์ | ประกอบด้วยการควบคุมที่ผูกกับข้อมูล |
เส้นขอบสี | สีขอบ. |
เส้นขอบสไตล์ | สไตล์เส้นขอบ |
ความกว้างของเส้นขอบ | ความกว้างของเส้นขอบ |
สาเหตุ การตรวจสอบ | แสดงเมื่อมีการยืนยันเกิดขึ้น |
สร้าง ChildControl แล้ว | ระบุว่ามีการสร้างการควบคุมลูกของการควบคุมเซิร์ฟเวอร์หรือไม่ |
รหัสลูกค้า | รหัสควบคุมของแท็ก HTML |
บริบท | วัตถุ HttpContext ที่เกี่ยวข้องกับการควบคุมเซิร์ฟเวอร์ |
การควบคุม | คอลเลกชันของการควบคุมทั้งหมดภายในการควบคุม |
การควบคุมสไตล์ | สไตล์สำหรับการควบคุมเว็บเซิร์ฟเวอร์ |
CssClass | คลาสซีเอสเอส |
DataItemContainer | ให้การอ้างอิงถึง namer หากใช้ IDataItemContainer |
DataKeysคอนเทนเนอร์ | ให้ข้อมูลอ้างอิงสำหรับ namer หากใช้ IDataKeysControl |
โหมดการออกแบบ | ระบุว่ามีการใช้การควบคุมในส่วนต่อประสานการออกแบบหรือไม่ |
ปิดการใช้งาน CssClass | รับหรือตั้งค่าคลาส CSS เพื่อนำไปใช้กับองค์ประกอบ HTML ที่แสดงผลเมื่อการควบคุมถูกปิดใช้งาน |
เปิดใช้งานแล้ว | บ่งชี้ว่าการควบคุมถูกปิดใช้งานหรือไม่ |
เปิดใช้งานธีม | ระบุว่าธีมใช้กับตัวควบคุมหรือไม่ |
เปิดใช้งานViewState | บ่งชี้ว่าจะรักษาสถานะมุมมองของตัวควบคุมหรือไม่ |
กิจกรรม | รับรายการตัวจัดการเหตุการณ์ที่แสดงถึงตัวควบคุม |
แบบอักษร | การตั้งค่าแบบอักษร |
สีหน้า | สีพื้นหน้า. |
มีแอตทริบิวต์ | บ่งชี้ว่าตัวควบคุมมีกลุ่มคุณสมบัติหรือไม่ |
HasChildViewState | ระบุว่าตัวควบคุมลูกของตัวควบคุมเซิร์ฟเวอร์ปัจจุบันมีการตั้งค่าสถานะมุมมองที่บันทึกไว้หรือไม่ |
ความสูง | ความสูงเป็นพิกเซลหรือเปอร์เซ็นต์ |
บัตรประจำตัวประชาชน | ตัวระบุของการควบคุม |
IsChildControlStateเคลียร์แล้ว | บ่งชี้ว่าการควบคุมที่อยู่ในการควบคุมนี้มีสถานะการควบคุมหรือไม่ |
เปิดใช้งานแล้ว | รับค่าที่ระบุว่ามีการเปิดใช้งานการควบคุมหรือไม่ |
IsTrackingViewState | ระบุว่าการควบคุมเซิร์ฟเวอร์จะบันทึกการเปลี่ยนแปลงสถานะมุมมองหรือไม่ |
เปิดใช้งาน IsViewState แล้ว | บ่งชี้ว่าสถานะมุมมองถูกเปิดใช้งานสำหรับการควบคุมนี้หรือไม่ |
LoadViewStateById | ระบุว่าตัวควบคุมมีส่วนร่วมในการโหลดสถานะมุมมองตาม ID แทนที่จะเป็นดัชนีหรือไม่ |
หน้าหนังสือ | เพจที่มีตัวควบคุม |
พ่อแม่ | คุณสมบัติการควบคุมโดยผู้ปกครอง |
ความเข้ากันได้ของการเรนเดอร์ | ระบุเวอร์ชันของ ASP.NET ที่ HTML ที่แสดงผลจะเข้ากันได้ |
เว็บไซต์ | ตัวยึดที่เก็บการควบคุมปัจจุบันเมื่อมีการแสดงอินเทอร์เฟซการออกแบบ |
สกินไอดี | รับหรือตั้งค่าสกินที่ใช้กับตัวควบคุม |
สไตล์ | รับชุดของคุณสมบัติข้อความที่จะแสดงเป็นคุณสมบัติสไตล์บนเลเบลภายนอกของการควบคุมเว็บเซิร์ฟเวอร์ |
ดัชนีแท็บ | รับหรือตั้งค่าป้ายชื่อดัชนีของการควบคุมเว็บเซิร์ฟเวอร์ |
แท็กคีย์ | รับค่า HtmlTextWriterTag ที่สอดคล้องกับการควบคุมเซิร์ฟเวอร์เว็บนี้ |
แท็กชื่อ | รับชื่อของป้ายกำกับการควบคุม |
การควบคุมเทมเพลต | ประกอบด้วยเทมเพลตสำหรับคอนโทรลนี้ |
ไดเรกทอรีแหล่งที่มาของเทมเพลต | รับไดเร็กทอรีเสมือนของเพจหรือคอนโทรลที่อยู่ภายในคอนโทรลนี้ |
เคล็ดลับเครื่องมือ | รับหรือตั้งค่าข้อความที่แสดงเมื่อตัวชี้เมาส์อยู่เหนือการควบคุมเว็บเซิร์ฟเวอร์ |
รหัสเฉพาะ | ตัวระบุที่ไม่ซ้ำ |
วิวสเตท | รับพจนานุกรมข้อมูลสถานะที่สามารถบันทึกและกู้คืนสถานะมุมมองการควบคุมเซิร์ฟเวอร์จากคำขอหลายรายการไปยังหน้าเดียวกัน |
ViewStateIgnoreCase | ระบุว่าวัตถุ StateBag คำนึงถึงขนาดตัวพิมพ์หรือไม่ |
ViewStateMode | รับหรือตั้งค่าสถานะมุมมองของการควบคุมนี้ |
มองเห็นได้ | ระบุว่าสามารถมองเห็นการควบคุมเซิร์ฟเวอร์ได้หรือไม่ |
ความกว้าง | รับหรือตั้งค่าความกว้างของการควบคุมเว็บเซิร์ฟเวอร์ |
วิธีการควบคุมเซิร์ฟเวอร์แสดงอยู่ในตารางต่อไปนี้:
วิธี | อธิบาย |
---|---|
เพิ่มแอตทริบิวต์ToRender | เพิ่มแอตทริบิวต์และสไตล์ HTML ที่จำเป็นในการแสดงผล HtmlTextWriterTag ที่ระบุ |
เพิ่มการควบคุม | เรียกหลังจากเพิ่มการควบคุมลูกในคอลเลกชันการควบคุมของวัตถุควบคุม |
AddParsedSubObject | แจ้งการควบคุมเซิร์ฟเวอร์ว่ามีการแยกวิเคราะห์องค์ประกอบ XML หรือ HTML และเพิ่มองค์ประกอบในคอลเลกชันการควบคุมของเซิร์ฟเวอร์ควบคุม |
ใช้StyleSheetSkin | ใช้คุณสมบัติสไตล์ที่กำหนดไว้ในสไตล์ชีตของเพจกับตัวควบคุม |
ล้าง CachedClientID | โครงสร้างพื้นฐาน ตั้งค่า ClientID ที่แคชไว้เป็น null |
ClearChildControlState | เอาข้อมูลสถานะการควบคุมสำหรับการควบคุมลูกของการควบคุมเซิร์ฟเวอร์ |
เคลียร์ไชลด์สเตท | เอาข้อมูลสถานะมุมมองและสถานะการควบคุมสำหรับการควบคุมลูกควบคุมเซิร์ฟเวอร์ทั้งหมด |
ล้าง ChildViewState | เอาข้อมูลสถานะมุมมองสำหรับการควบคุมลูกของตัวควบคุมเซิร์ฟเวอร์ทั้งหมด |
CreateChildControls | ใช้เพื่อสร้างการควบคุมลูก |
CreateControlCollection | สร้างคอลเลกชันการควบคุมใหม่เพื่อเก็บการควบคุมลูก |
CreateControlStyle | สร้างวัตถุสไตล์ที่ใช้คุณสมบัติที่เกี่ยวข้องกับสไตล์ทั้งหมด |
DataBind | ผูกแหล่งข้อมูลเข้ากับการควบคุมเซิร์ฟเวอร์และการควบคุมลูกทั้งหมด |
DataBind(บูลีน) | ผูกแหล่งข้อมูลและตัวเลือกที่เพิ่มเหตุการณ์ DataBinding ไปยังการควบคุมเซิร์ฟเวอร์และการควบคุมลูกทั้งหมด |
DataBindChildren | ผูกแหล่งข้อมูลกับตัวควบคุมลูกของการควบคุมเซิร์ฟเวอร์ |
ทิ้ง | เปิดใช้งานการควบคุมเซิร์ฟเวอร์เพื่อดำเนินการล้างข้อมูลขั้นสุดท้ายก่อนที่จะออกจากหน่วยความจำ |
SureChildControls | กำหนดว่าการควบคุมเซิร์ฟเวอร์ประกอบด้วยการควบคุมลูกหรือไม่ ถ้าไม่เช่นนั้น ให้สร้างการควบคุมลูก |
ตรวจสอบให้แน่ใจว่าID | สร้างตัวระบุสำหรับตัวควบคุมที่ไม่มี |
เท่ากับ(วัตถุ) | กำหนดว่าวัตถุที่ระบุเท่ากับวัตถุปัจจุบันหรือไม่ |
จบ | อนุญาตให้วัตถุพยายามปล่อยทรัพยากรและดำเนินการล้างข้อมูลอื่นๆ ก่อนที่วัตถุจะถูกเรียกคืนโดยถังรีไซเคิล |
ค้นหาการควบคุม (สตริง) | ค้นหาคอนเทนเนอร์ที่มีชื่อปัจจุบันสำหรับการควบคุมเซิร์ฟเวอร์ด้วยพารามิเตอร์ id ที่ระบุ |
FindControl(สตริง, Int32) | ค้นหาคอนเทนเนอร์ที่มีชื่อปัจจุบันสำหรับการควบคุมเซิร์ฟเวอร์ด้วยพารามิเตอร์ id และจำนวนเต็มที่ระบุ |
จุดสนใจ | ตั้งค่าโฟกัสอินพุตสำหรับตัวควบคุม |
GetDesignModeState | รับข้อมูลเวลาออกแบบของตัวควบคุม |
รับประเภท | รับประเภทของอินสแตนซ์ปัจจุบัน |
รับ UniqueIDRelativeTo | ส่งกลับส่วนที่นำหน้าของคุณสมบัติ ID เฉพาะของตัวควบคุมที่ระบุ |
มีการควบคุม | กำหนดว่าการควบคุมเซิร์ฟเวอร์ประกอบด้วยการควบคุมลูกหรือไม่ |
มีกิจกรรม | ระบุว่าเหตุการณ์ได้รับการลงทะเบียนโดยส่วนควบคุมหรือส่วนควบคุมรองอื่นๆ |
เป็นเนื้อหาที่แท้จริง | กำหนดว่าการควบคุมเซิร์ฟเวอร์ประกอบด้วยเนื้อหาข้อความเท่านั้นหรือไม่ |
LoadControlState | กู้คืนข้อมูลสถานะการควบคุม |
LoadViewState | เรียกคืนข้อมูลสถานะการดู |
แผนที่เส้นทางปลอดภัย | ดึงข้อมูลเส้นทางทางกายภาพที่มีการแมปเส้นทางเสมือนแบบสัมบูรณ์หรือแบบสัมพัทธ์ |
MemberwiseClone | สร้างสำเนาแบบตื้นของวัตถุปัจจุบัน |
ผสานสไตล์ | คัดลอกองค์ประกอบที่ไม่ว่างเปล่าของตัวควบคุมเว็บด้วยสไตล์ที่ระบุ แต่ไม่ได้เขียนทับองค์ประกอบสไตล์ที่มีอยู่ของตัวควบคุม |
OnBubbleEvent | กำหนดว่าเหตุการณ์ของการควบคุมเซิร์ฟเวอร์ผ่านลำดับชั้นการควบคุมเซิร์ฟเวอร์ UI ของเพจหรือไม่ |
OnDataBinding | ยกเหตุการณ์การผูกข้อมูล |
OnInit | ยกเหตุการณ์ Init |
กำลังโหลด | ทำให้เกิดเหตุการณ์การโหลด |
OnPreRender | ยกระดับเหตุการณ์ PreRender |
เมื่อยกเลิกการโหลด | ยกเหตุการณ์การถอนการติดตั้ง |
OpenFile | รับสตรีมที่ใช้ในการอ่านไฟล์ |
การควบคุมที่ถูกลบออก | เรียกหลังจากตัวควบคุมลูกถูกเอาออกจากคอลเลกชันการควบคุมของวัตถุตัวควบคุม |
เรนเดอร์ | แสดงการควบคุมไปยังผู้เขียน HTML ที่ระบุ |
RenderBeginTag | แสดงแท็กเปิด HTML ของตัวควบคุมให้กับผู้เขียนที่ระบุ |
เรนเดอร์เด็กๆ | แสดงผลเนื้อหาของลูกของตัวควบคุมเซิร์ฟเวอร์ลงในวัตถุ HtmlTextWriter ที่ให้ไว้เพื่อเขียนเนื้อหาที่แสดงผลบนไคลเอนต์ |
เรนเดอร์เนื้อหา | แสดงเนื้อหาของการควบคุมไปยังผู้เขียนที่ระบุ |
RenderControl(HtmlTextWriter) | ส่งออกเนื้อหาการควบคุมเซิร์ฟเวอร์ไปยังวัตถุ HtmlTextWriter ที่ให้มา และบันทึกข้อมูลการติดตามเกี่ยวกับการควบคุมหากเปิดใช้งานการติดตาม |
RenderEndTag | แสดงแท็กปิด HTML ของตัวควบคุมให้กับผู้เขียนที่ระบุ |
แก้ไขอะแดปเตอร์ | รับอะแดปเตอร์ควบคุมที่รับผิดชอบในการแสดงผลการควบคุมที่ระบุ |
บันทึกการควบคุมสถานะ | บันทึกการเปลี่ยนแปลงสถานะการควบคุมเซิร์ฟเวอร์ที่เกิดขึ้นตั้งแต่เพจถูกโพสต์กลับไปยังเซิร์ฟเวอร์ |
บันทึก ViewState | บันทึกสถานะใดๆ ที่แก้ไขหลังจากเรียกใช้เมธอด TrackViewState |
ตั้งค่าการออกแบบโหมดสถานะ | ตั้งค่าข้อมูลเวลาออกแบบสำหรับการควบคุม |
ToString | ส่งกลับสตริงที่เป็นตัวแทนของวัตถุปัจจุบัน |
TrackViewState | ทำให้ตัวควบคุมติดตามการเปลี่ยนแปลงสถานะมุมมองเพื่อให้สามารถจัดเก็บไว้ในคุณสมบัติ ViewState ของวัตถุได้ |
ลองมาดูที่การควบคุมเซิร์ฟเวอร์เฉพาะ - การควบคุมมุมมองแบบต้นไม้ การควบคุมมุมมองแบบต้นไม้คือการควบคุมการนำทาง การควบคุมการนำทางอื่นๆ ได้แก่ การควบคุมเมนู และการควบคุม SiteMapPath
เพิ่มตัวควบคุมมุมมองแบบต้นไม้ให้กับเพจ เลือก แก้ไขโหนด... จากงานและแก้ไขแต่ละโหนดโดยใช้โปรแกรมแก้ไขโหนดมุมมองแผนผังดังต่อไปนี้:
หลังจากที่สร้างโหนดสำเร็จแล้ว จอแสดงผลต่อไปนี้จะปรากฏในมุมมองการออกแบบ:
งาน AutoFormat... ช่วยให้คุณสามารถระบุรูปแบบของมุมมองแผนผังได้ดังต่อไปนี้:
เพิ่มตัวควบคุมป้ายกำกับและตัวควบคุมกล่องข้อความบนเพจและตั้งชื่อตามลำดับ lblmessage และ txtmessage
เขียนโค้ดสองสามบรรทัดเพื่อให้แน่ใจว่าเมื่อมีการเลือกโหนดเฉพาะ ตัวควบคุมป้ายกำกับจะแสดงข้อความของโหนด และกล่องข้อความจะแสดงโหนดย่อยทั้งหมดที่อยู่ด้านล่าง (ถ้ามี) รหัสสำหรับไฟล์พื้นหลังควรมีลักษณะดังนี้:
using System;using System.Collections;using System.Configuration;using System.Data;using System.Linq;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.HtmlControls;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Xml.Linq;namespace eventdemo { public partial class treeviewdemo : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { txtmessage.Text = " "; } protected void TreeView1_SelectedNodeChanged(object sender, EventArgs e) { txtmessage.Text = " "; lblmessage.Text = "Selected node changed to: " + TreeView1.SelectedNode.Text; TreeNodeCollection childnodes = TreeView1.SelectedNode.ChildNodes; if(childnodes != null) { txtmessage.Text = " "; foreach (TreeNode t in childnodes) { txtmessage.Text += t.Value; } } } }}
ดำเนินการหน้าเพื่อดูผลกระทบและคุณจะสามารถขยายและยุบโหนดได้