ติดปัญหากับ 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 กันแน่
เมื่อแก้ไขถูกต้องแล้วทุกอย่างก็จะทำงานเป็นปกติ