一、簡介
到目前為止,我們已經討論了開發Ajax控制項所涉及的用戶端相關技術。現在,讓我們來討論此過程中與伺服器端相關的一些技術。
需要說明的是,在【用戶端】篇中我們的舉例本質上僅是使用ASP.NET AJAX架構提供的物件導向JavaScript技術來增強了一個用戶端映像組件,而沒有明顯涉及到AJAX技術(除了ScriptManager在後台以AJAX方式下載並管理用戶端指令碼代碼外)。所以,這個例子是簡單的,僅憑用戶端相關知識就可以使用這個增強控制項。
但是,在實際開發中,當要增強用戶端控制項涉及到AJAX技術時,或者乾脆是想增強伺服器端組件(如UpdatePanel控制項)時,我們必須進行相關的伺服器端編程,而這要求我們必須對Ajax控制項開發中所涉及的伺服器端相關聯的類有所瞭解。而且,還要以ASP.NET 2.0伺服器控制項開發相關知識為基本前提,特別是在開發複雜的Ajax控制項時。
在本篇中,我們要重新構造一個增強映像按鈕控制項MySrvImageButton,此控制項將以ASP.NET 2.0伺服器控制項ImageButton為基礎。
二、AJAX控制項程式開發伺服器端相關技術
首先,讓我們來看一下AJAX控制項程式開發伺服器端相關組件及其關係,這些類之間的繼承關係圖如下圖1所示。
圖1:控制項開發涉及的主要伺服器端類之間階層圖
上圖展示了組件、控制項和擴充器之間的繼承關係。如你所見,為了開發一個控制項(注意,Component和Extender不在本文討論範圍之內),我們有兩個選擇:其一,建立一個派生自ScriptControl的類;其二,建立一個實現IScriptControl介面的類。但是,如果你想使你的控制項從WebControl派生,那麼,ScriptControl應該是一個更好的選擇—因為它正是派生自WebControl控制項本身。但是,如果你想從頭開發建立你的控制項,並且不要求實現WebControl所具備的任何內在特徵,那麼,實現IScriptControl則更為恰當。此外,當你想在一個現有控制項(例如本文中的MySrvImageButton)中添加Ajax特徵時選擇使用介面IScriptControl也會是你的選擇。但是這兩種方法都要求重載下列兩個方法:①、GetScriptDescriptors;②、GetScriptReferences。