Skip to main content

อันเนื่องจาก DelegateControl

Submitted by ezybzy on

ติดปัญหากับ DelegateControl มาหลายวัน วันนี้แก้ออกเสียที เป็นความสะเพร่าของผมเอง

ใน CKSDev มี Template การสร้าง DelegateControl ไว้ให้ใช้ แต่เหมือนจะไม่ได้เขียนคำอธิบายที่ชัดเจนไว้ให้ชัดเจนว่าต้องกรอกอะไร แล้วห้ามกรอกอะไร

หลักการของ DelegateControl คือ การโหลด Control ที่บนหน้าเว็บไม่รู้ว่าคืออะไรมาแสดง โดย Control ปริศนานี้จะถูกโหลดผ่าน Feature (ได้ทุก Scope เลย) ดังนั้นเราจึงต้องมาเขียน Element Manifest อธิบายมัน

สำหรับตัวอย่าง Tag ภายใน Element Manifest เช่น

<Control Id="ชื่ออ้างอิงที่จะเอาไปใช้" Sequence="เลขน้ำหนัก ยิ่งน้อยยิ่งเบา ยิ่งอยู่ก่อน" ControlSrc="ที่อยู่ของ Control ปกติจะใช้ ~/_controltemplates/ นำหน้า แต่ถ้าไปวางไว้ที่อื่นก็ใส่ Path ที่อ้างถึงได้ (อะไรที่ IIS มองเห็น)" />

หรือ

<Control Id="ชื่ออ้างอิงที่จะเอาไปใช้" Sequence="เลขน้ำหนัก" ControlAssembly="..." ControlClass="..." />

ปัญหาคือ ในแบบฟอร์มของ CKSDev ไม่ได้ระบุว่า หากกรอก ControlSrc แล้ว ไม่จำเป็นต้องกรอก ControlAssembly และ ControlClass (แต่ 2 ตัวนี้ต้องกรอกคู่กัน) หากกรอกไปหมดทุกอันเลย ผลที่ได้คือ Delegate Control จะไม่ถูกโหลดมาใช้งาน เพราะมันคงงงว่าจะอ่านจาก ascx หรือจะอ่านจาก Class กันแน่

เมื่อแก้ไขถูกต้องแล้วทุกอย่างก็จะทำงานเป็นปกติ

Tags