ผู้แต่ง: Dflying Chen ( http://dflying.cnblogs.com/ )
PS: ขอบคุณความรักของทุกคน ฉันได้เรียนรู้มากมายในช่วงสองเดือนที่ฉันตั้งรกรากอยู่ใน Blog Park ได้รู้จักเพื่อนมากมาย และได้รับโอกาสมากมาย ขณะนี้ ฉันได้รับเกียรติให้แปลหนังสือ Atlas: Foundations of Atlas: Rapid Ajax Development ด้วย ASP.NET 2.0 ซึ่งคาดว่าจะจัดพิมพ์โดยสำนักพิมพ์ People's Post and Telecommunications Publishing House ในอีกสามเดือนข้างหน้า ช่วงนี้ผมค่อนข้างยุ่งและไม่สามารถอัพเดทบล็อกได้บ่อยเหมือนเมื่อก่อนครับ แน่นอนว่า เพื่อนๆ สามารถพูดคุยเกี่ยวกับคำถามที่เกี่ยวข้องกับ Atlas ต่อไปได้ และฉันจะพยายามตอบคำถามเหล่านี้อย่างเต็มที่
ในอีกสองเดือนข้างหน้า ฉันหวังว่าจะมุ่งมั่นสู่ความเป็นเลิศในการแปล Foundations of Atlas ดังนั้นจึงมีหลายประเด็นที่ต้องหารือกับเพื่อน ๆ อย่างแน่นอน เช่น คำศัพท์ รูปแบบการแปล ฯลฯ ขอขอบคุณล่วงหน้าที่นี่!
ในบทความก่อนหน้านี้ (โปรดดูที่: การพัฒนาตัวควบคุม Extender ฝั่งเซิร์ฟเวอร์ ASP.NET Atlas - การเขียนพฤติกรรมฝั่งไคลเอ็นต์) เราได้เขียนพฤติกรรมฝั่งไคลเอ็นต์แล้ว ในบทความนี้ เราจะสรุปและเรียกใช้เป็นตัวควบคุมฝั่งเซิร์ฟเวอร์
ก่อนอื่นมาที่ไฟล์ ValidateUserNameProperties.cs คลาสนี้สืบทอดมาจากคลาสพื้นฐาน TargetControlPropertiesBase<Control> ซึ่งกำหนดความสัมพันธ์ของการแมประหว่างค่าคุณสมบัติของไคลเอ็นต์และค่าคุณสมบัติของเซิร์ฟเวอร์ ในเวลาเดียวกัน คลาสพื้นฐาน TargetControlPropertiesBase<Control> และ Atlas Control Extender ได้สร้างสคริปต์ XML ฝั่งไคลเอ็นต์ให้กับคุณแล้ว คุณเพียงแค่ต้องกำหนดแอตทริบิวต์ที่จำเป็นสำหรับพฤติกรรมของคุณเท่านั้น
ควรเพิ่มแอตทริบิวต์ห้ารายการ ได้แก่ CheckResultLabelID, ServiceName, MethodName, ValidMessage และ InvalidMessage เพื่อความเรียบง่าย ฉันจึงยกตัวอย่างแอตทริบิวต์
[DefaultValue("")]
เท่านั้น
[IDReferenceProperty(typeof(WebControl))]
[คุณสมบัติที่จำเป็น()]
สตริงสาธารณะ CheckResultLabelID
-
รับ
-
กลับ GetPropertyStringValue("CheckResultLabelID");
-
ชุด
-
SetPropertyStringValue("CheckResultLabelID", ค่า);
-
-
คำจำกัดความของ CheckResultLabelID นำหน้าด้วยแอตทริบิวต์ 3 รายการดังนี้
DefaultValue: ตั้งค่าเริ่มต้นของแอตทริบิวต์นี้
IDReferenceProperty: ระบุว่าคุณสมบัตินี้สามารถจัดเก็บ ID ของตัวควบคุมชนิดใดชนิดหนึ่งเท่านั้น
RequiredProperty: ระบุว่าคุณสมบัตินี้เป็นสิ่งจำเป็น
สำหรับคุณสมบัติอื่นๆ หลายประการ คุณสามารถอ้างอิงถึงไฟล์ต้นฉบับที่ให้ไว้ในภายหลัง
จากนั้นลองดูที่ไฟล์ ValidateUserNameExtender.cs ส่วนหลักมีดังนี้:
[Designer(typeof(ValidateUserNameDesigner))]
[ClientScriptResource("Dflying", "ValidateUserNameBehavior", "Dflying.Atlas.ControlTookit.ValidateUserName.ValidateUserNameBehavior.js")]
[RequiredScript(typeof(ValidateUserNameExtender))]
คลาสสาธารณะ ValidateUserNameExtender : ExtenderControlBase<ValidateUserNameProperties, Control>
-
-
ในบรรดาสิ่งเหล่านั้น ValidateUserNameExtender ของเราสืบทอดมาจากคลาสพื้นฐาน ExtenderControlBase<ValidateUserNameProperties, Control> และรับการดำเนินการทั่วไปบางอย่าง และมีการใช้คุณลักษณะสามประการกับชั้นเรียน:
ผู้ออกแบบ: ระบุชื่อคลาสของตัวออกแบบของ Extender นี้ (ใช้เพื่อให้การสนับสนุนเวลาออกแบบ)
ClientScriptResource: ระบุข้อมูลที่จำเป็นในการสร้างสคริปต์ Atlas XML ของไคลเอ็นต์ Dflying และ ValidateUserNameBehavior ที่นี่จะต้องสอดคล้องกับที่กำหนดไว้ใน ValidateUserNameBehavior.js ก่อนหน้า
RequiredScript: ระบุสคริปต์ที่ไคลเอ็นต์ต้องการ เพื่อให้ Atlas เชื่อมโยง ValidateUserNameBehavior.js กับเพจในรูปแบบของไฟล์ axd
สุดท้ายนี้จะมีไฟล์ ValidateUserNameDesigner.cs ซึ่งคุณสามารถเพิ่มการสนับสนุนขณะออกแบบได้ ให้การควบคุมของคุณมีสไตล์การแสดงผลที่แตกต่างกันโดยมีค่าคุณสมบัติที่แตกต่างกันที่กำหนดไว้ใน Visual Studio เพื่อให้ง่ายขึ้นที่นี่ ฉันจะไม่เพิ่มการสนับสนุนขณะออกแบบ
ณ จุดนี้ Extender ของเราได้ถูกเขียนขึ้นแล้ว และ DLL ที่สร้างขึ้นหลังจาก Release Build สามารถนำมาใช้ได้โดยตรง ในบทความหน้าผมจะสาธิตการใช้งาน Extender นี้ในโปรแกรมจริง