探讨ASP.NET2.0的Web控件改进之概述
生活随笔
收集整理的這篇文章主要介紹了
探讨ASP.NET2.0的Web控件改进之概述
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
作者: 朱先忠編譯 一、 引言
到目前為止,你可能已經了解了大量的ASP.NET 2.0新特征-母版頁面,主題,提供者,等等……所有這樣內容都相當精彩;但是,你是否了解到有關定制Web控件開發方面的重大變化?這正是我在本文中所想討論的。如果你已經從事于控件開發,那么,我想本文所描述的ASP.NET 2.0中的新的改進特征會立即應用于你的控件開發中。
首先應
該注意的是,你以前使用ASP.NET 1.1(或1.0)開發的所有Web控件在2.0版本下將繼續良好運行-微軟并沒有破壞你的現有代碼。在本文中,我將向你介紹的所有相關內容,包括許多新的令人激動的技術,所有這些你都可以添加到現有控件或在新的控件環境中使用。
【作者注】本文假定你對定制Web控件開發已經有一個基本了解。在本文中,我以一個增強版本的EmailContact控件為例對ASP.NET 2.0中的Web控件改進技術作全面探討。
二、 改進
表格1描述了ASP.NET 2.0在定制Web控件開發方面所作的大部分的重大改進。在本系列文章中,我將對這些特征展開逐一討論。
表格1:ASP.NET 2.0 Web控件改進功能。
三、 增強EmailContact Web控件
本文中的定制EmailContact Web控件(參考圖1)允許在你的站點中加入一個"contact us"表單,它具有完整的電子郵件功能。在本文中,我將使用該功能增強這一控件。
四、 一個新的基類
以前,開發者都是從WebControl類派生他們的可視化Web控件。我之所以在此使用了"可視化"一詞是因為,典型情況上,沒有在瀏覽器中生成任何 內容的控件都是派生自Control類。這一點并沒有改變-你應該繼續使用該Control類來派生任何這樣的非可視化控件-它們執行不可見功能或在瀏覽 器中生成除可視化HTML內容之外的任何其它內容。而且,在開發可視化Web控件時,你還應該繼續使用WebControl類。然而,我們所開發的大多數 復合控件都是為了利用現有控件的功能。在這種情況下,你應該總是從WebControl類進行派生,但是你還要記住另外一些有關細節-否則的話,有可能導 致許多問題。
復合控件必須實現INamingContainer接口,并且需要包括在你的控件類中。這個接口能夠確保在你的控件及其可以生成 的整個控件層次中的所有的HTML標簽中都具有唯一的標簽命名。當你在單個頁面上存在多個相同類型的復合控件的情況下,這是相當關鍵的。在這樣的情況下, 你需要確保任何生成的子元素都具有唯一的名稱。忘記實現該接口能夠導致各種問題的出現。
在ASP.NET 2.0以前,復合控件開發者還需要記住在一個控件的Render方法中調用EnsureChildControls。在我以前的文章中曾經向你介紹如何重載該Render方法并且在調用基類的Render方法前調用這個方法。要使控件在Visual Studio設計時刻正確生成這一步是必要的;否則,有可能帶來許多不便。
上面兩個步驟在復合控件開發中如此普遍,以致于許多開發者往往都會構建一個包括這兩個細節的基類,然后從該基類下派生他們所有的新的復合控件。作為代替,ASP.NET 2.0提供了(更準確地說是"名字為")CompositeControl。借助于這個類來構建你的復合控件,你就不必再記住實現INamingContainer或從Render方法中執行一個EnsureChildControls調用了。
另外,還存在其它一些新的基類,例如用于數據綁定的控件等,在此不再贅述。
到目前為止,你可能已經了解了大量的ASP.NET 2.0新特征-母版頁面,主題,提供者,等等……所有這樣內容都相當精彩;但是,你是否了解到有關定制Web控件開發方面的重大變化?這正是我在本文中所想討論的。如果你已經從事于控件開發,那么,我想本文所描述的ASP.NET 2.0中的新的改進特征會立即應用于你的控件開發中。
首先應
| |
【作者注】本文假定你對定制Web控件開發已經有一個基本了解。在本文中,我以一個增強版本的EmailContact控件為例對ASP.NET 2.0中的Web控件改進技術作全面探討。
二、 改進
表格1描述了ASP.NET 2.0在定制Web控件開發方面所作的大部分的重大改進。在本系列文章中,我將對這些特征展開逐一討論。
表格1:ASP.NET 2.0 Web控件改進功能。
| 改進 | 描述 |
| 新的基類 | ASP.NET 2.0中又引入了一些新的基類供你派生自己的控件。后面,我重點介紹一個控件-CompositeControl。 |
| ControlState | 這是我們所熟悉的ViewState的"嫡親"。如今,ControlState中已經不再需要使用專門的方法進行狀態管理;另一方面,當控件用戶在一個站點(或頁面)上關閉狀態管理機制時,有助于使你避免出錯。 |
| 靈敏標簽 | 這是令Windows控件開發者相當興奮的新功能!在本文中,我將向你展示如何在你自己的定制控件中加入這樣的功能。 |
| 模板設計時刻編輯 | 在1.1版本中,要對控件模板添加設計時刻編輯能力是相當困難的。幸好,ASP.NET 2.0使得添加這個功能相當容易。在本系列文章的最后一部分中我將討論這個問題。 |
| 自動格式化 | 這也是一個巨大的改進!在使用DataGrid控件時你可以從一個預定義格式的列表中選擇既定格式。ASP.NET 2.0使得在你的自定義控件中加入這一功能也非常容易。 |
| Web資源 | 這是我十分喜歡的一個改進,因為我總是不時地開發與圖像有關的一些控件。在ASP.NET 2.0中,現在你可以發布一個控件的DLL,而且不必再考慮別的什么內容。也就是說,現在,你能夠把圖像和其它資源嵌入到控件的DLL文件內。 |
三、 增強EmailContact Web控件
本文中的定制EmailContact Web控件(參考圖1)允許在你的站點中加入一個"contact us"表單,它具有完整的電子郵件功能。在本文中,我將使用該功能增強這一控件。
| 圖1.缺省狀態下的EmailContact控件 |
四、 一個新的基類
以前,開發者都是從WebControl類派生他們的可視化Web控件。我之所以在此使用了"可視化"一詞是因為,典型情況上,沒有在瀏覽器中生成任何 內容的控件都是派生自Control類。這一點并沒有改變-你應該繼續使用該Control類來派生任何這樣的非可視化控件-它們執行不可見功能或在瀏覽 器中生成除可視化HTML內容之外的任何其它內容。而且,在開發可視化Web控件時,你還應該繼續使用WebControl類。然而,我們所開發的大多數 復合控件都是為了利用現有控件的功能。在這種情況下,你應該總是從WebControl類進行派生,但是你還要記住另外一些有關細節-否則的話,有可能導 致許多問題。
復合控件必須實現INamingContainer接口,并且需要包括在你的控件類中。這個接口能夠確保在你的控件及其可以生成 的整個控件層次中的所有的HTML標簽中都具有唯一的標簽命名。當你在單個頁面上存在多個相同類型的復合控件的情況下,這是相當關鍵的。在這樣的情況下, 你需要確保任何生成的子元素都具有唯一的名稱。忘記實現該接口能夠導致各種問題的出現。
在ASP.NET 2.0以前,復合控件開發者還需要記住在一個控件的Render方法中調用EnsureChildControls。在我以前的文章中曾經向你介紹如何重載該Render方法并且在調用基類的Render方法前調用這個方法。要使控件在Visual Studio設計時刻正確生成這一步是必要的;否則,有可能帶來許多不便。
上面兩個步驟在復合控件開發中如此普遍,以致于許多開發者往往都會構建一個包括這兩個細節的基類,然后從該基類下派生他們所有的新的復合控件。作為代替,ASP.NET 2.0提供了(更準確地說是"名字為")CompositeControl。借助于這個類來構建你的復合控件,你就不必再記住實現INamingContainer或從Render方法中執行一個EnsureChildControls調用了。
另外,還存在其它一些新的基類,例如用于數據綁定的控件等,在此不再贅述。
總結
以上是生活随笔為你收集整理的探讨ASP.NET2.0的Web控件改进之概述的全部內容,希望文章能夠幫你解決所遇到的問題。