功能延伸控制項(Extender)與一般控制項的差異

在你學習使用 ASP.NET AJAX 的 Control Toolkit 控制項的時候,經常會遇到一種以Extender結尾的控制項名稱,例如MaskedEditExtender等等,但是某些控制項並沒有Extender,例如NoBot,初學者可能覺得納悶,這兩種類型的控制項有何差異,這一篇文章就來說明一下它們的分別與用途。

「ASP.NET AJAX Control Toolkit」包含了超過30個以上、提供各種功能的控制項,如果你注意這些呈列在工具箱中的控制項,會發現其中大部份的名稱均以「Extender」作結尾,例如:CollapsiblePanelExtender 等等。


Extender是延伸器的意思,冠上這個字尾的控制項與一般控制項不同的地方,在於它本身並沒有辦法獨立運作,最主要的目的是提供AJAX功能的延伸機制,為標準的ASP.NET控制項,嵌入某種特定的AJAX功能。

Extender類型的控制項,在使用上非常容易,它們通常會提供一個TargetControlID屬性,這個屬性用來指定將要擴充功能的關聯控制項,最簡單的Extender控制項,只要將其與所要延伸的功能控制項,拖曳至網頁上,然後設定TargetControlID屬性,就可以完成延伸功能的實作,下圖說明其中的關係:


延伸控制項由於本身只提供標準控制項功能的延伸,為其再掛上一層Ajax功能,因此在網頁執行的時候,此種類型的控制項並不存在,而標準控制項本身則成為具備非同步溝通能力的AJAX專屬控制項,而除了設定TargetControlID屬性,比較複雜的延伸控制項還必須另外設定關聯的屬性標籤。

Visual Studio 2008當中的ASP.NET控制項,提供了Extender設定的相關支援,因此,這雖然不是微軟自已開發出來的控制項,但是它們在未來是被完全支援的,所以不用擔心它是否會成為過渡產品,好好享受它所為我們帶來的好處吧。

沒有留言: