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