การสร้างการควบคุมเซิร์ฟเวอร์ใน Asp.net นั้นเหมือนกับการควบคุม Windows Form มีหลายวิธี:
1. การควบคุมผู้ใช้
2. การควบคุมแบบกำหนดเองที่ได้รับจาก Control และ WebControl
3. ขยายจากการควบคุมเซิร์ฟเวอร์ Asp.net ที่มีอยู่
การควบคุมผู้ใช้มีนามสกุล .ascx และบันทึกเป็นไฟล์ข้อความ การควบคุมผู้ใช้ไม่จำเป็นต้องได้รับการคอมไพล์ล่วงหน้าเหมือนกับการควบคุมเซิร์ฟเวอร์ที่ได้รับจากการควบคุมและ WebControl เมื่อใช้การควบคุมผู้ใช้ในหน้า .aspx ตัวแยกวิเคราะห์หน้าจะเริ่มต้นจาก สร้างจากไฟล์ aspx และคอมไพล์เป็นชุดประกอบ ข้อดีของมันคือ: แก้ปัญหาการใช้โค้ดซ้ำ และการควบคุมผู้ใช้แต่ละรายมีโมเดลออบเจ็กต์ของตัวเอง และภาษาการเขียนไม่เกี่ยวข้องกับภาษาของเพจ .aspx
ขยายจากการควบคุมเซิร์ฟเวอร์ Asp.net ที่มีอยู่ โดยปรับปรุงฟังก์ชันของการควบคุมเซิร์ฟเวอร์เนทิฟ .net เป็นหลัก เพื่อตอบสนองความต้องการของการพัฒนาและผู้ใช้ปลายทางของเรา
การควบคุมแบบกำหนดเองที่ได้รับจาก Control และ WebControl จะถูกปรับใช้ในรูปแบบของไลบรารีคลาสที่คอมไพล์แล้ว
จะไม่มีการอธิบายสิ่งที่ 1 และ 3 ข้างต้นในชุดนี้ ในชุดนี้จะอธิบายเฉพาะการควบคุมเซิร์ฟเวอร์ที่ได้รับจาก Control และ WebControl เท่านั้น
หากเราต้องการเขียนการควบคุมแบบกำหนดเอง เราจำเป็นต้องสืบทอดจาก Control และ WebControl Control เท่านั้นที่ใช้อินเทอร์เฟซ IComponent และ WebControl เองก็ได้มาจาก Control ดังนั้นจึงรองรับการออกแบบส่วนประกอบด้วยภาพด้วย
วิธีการเรนเดอร์และคลาส HtmlTextWriter เมื่อเราได้รับการควบคุมเซิร์ฟเวอร์ Asp.net จากคลาสการควบคุม คลาสการควบคุมจะให้การเรนเดอร์ที่โอเวอร์โหลดได้และอินสแตนซ์ของประเภท HtmlTextWriter วิธีการเรนเดอร์คือการส่งเนื้อหาการควบคุมเซิร์ฟเวอร์ไปยังที่ให้มา วัตถุ HtmlTextWriter และ HtmlTextWriter สรุปฟังก์ชันการเขียนสตรีมข้อความ HTML
ใช้ระบบ; ใช้ System.Collections.Generic; ใช้ System.Text;
เนมสเปซ ClassLibrary1 - คลาสสาธารณะ Control1: System.Web.UI.Control - ป้องกันแทนที่เป็นโมฆะ Render (ตัวเขียน System.Web.UI.HtmlTextWriter) - writer.Write("ฉันอยู่นี่"); - -
คลาสสาธารณะ Control2: System.Web.UI.WebControls.WebControl - ป้องกันแทนที่เป็นโมฆะ Render (ตัวเขียน System.Web.UI.HtmlTextWriter) - writer.Write("ฉันก็มาเหมือนกัน"); - - - |
ในโค้ดข้างต้น เรากำหนด Control1 และ Control2 ซึ่งสืบทอดมาจาก Control และ WebControl ตามลำดับ แล้วอะไรคือความแตกต่างที่สำคัญระหว่างทั้งสอง ดูเอฟเฟกต์ต่อไปนี้ก่อน:
จากผลข้างต้น จะเห็นความแตกต่างได้ไม่ยาก คลาส WebControl ให้การสนับสนุนสไตล์ผ่านแอตทริบิวต์ เช่น แบบอักษร ความสูง สีพื้นหลัง ฯลฯ แล้วเราจะเลือกรับมาจาก Control เมื่อใด และเราจะเลือกรับจาก WebControl เมื่อใด หากตัวควบคุมต้องการสร้างองค์ประกอบที่ไม่ใช่ภาพหรือแสดงไปยังไคลเอนต์ที่ไม่ใช่ HTML ตัวควบคุมนั้นจะได้รับมาจากการควบคุม เช่น SqlDataSource หากต้องการให้ไคลเอนต์มีภาพ HTML เราก็จะได้มาจาก WebControl เช่น กล่องข้อความ .