熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

探討ASP.NET 2.0的Web控件改進之概述

2013-11-13 10:20:48  來源: .NET編程 
引言

  到目前為止你可能已經了解了大量的ASPNET 新特征母版頁面主題提供者等等……所有這樣內容都相當精彩但是你是否了解到有關定制Web控件開發方面的重大變化?這正是我在本文中所想討論的如果你已經從事於控件開發那麼我想本文所描述的ASPNET 中的新的改進特征會立即應用於你的控件開發中

  首先應該注意的是你以前使用ASPNET (或)開發的所有Web控件在版本下將繼續良好運行微軟並沒有破壞你的現有代碼在本文中我將向你介紹的所有相關內容包括許多新的令人激動的技術所有這些你都可以添加到現有控件或在新的控件環境中使用

  【作者注】本文假定你對定制Web控件開發已經有一個基本了解在本文中我以一個增強版本的EmailContact控件為例對ASPNET 中的Web控件改進技術作全面探討

   改進

  表格描述了ASPNET 在定制Web控件開發方面所作的大部分的重大改進在本系列文章中我將對這些特征展開逐一討論

  表格:ASPNET Web控件改進功能

改進 描述 新的基類 ASPNET 中又引入了一些新的基類供你派生自己的控件後面我重點介紹一個控件CompositeControl ControlState 這是我們所熟悉的ViewState的嫡親如今ControlState中已經不再需要使用專門的方法進行狀態管理另一方面當控件用戶在一個站點(或頁面)上關閉狀態管理機制時有助於使你避免出錯 靈敏標簽 這是令Windows控件開發者相當興奮的新功能!在本文中我將向你展示如何在你自己的定制控件中加入這樣的功能 模板設計時刻編輯 在版本中要對控件模板添加設計時刻編輯能力是相當困難的幸好ASPNET 使得添加這個功能相當容易在本系列文章的最後一部分中我將討論這個問題 自動格式化 這也是一個巨大的改進!在使用DataGrid控件時你可以從一個預定義格式的列表中選擇既定格式ASPNET 使得在你的自定義控件中加入這一功能也非常容易 Web資源 這是我十分喜歡的一個改進因為我總是不時地開發與圖像有關的一些控件在ASPNET 現在你可以發布一個控件的DLL而且不必再考慮別的什麼內容也就是說現在你能夠把圖像和其它資源嵌入到控件的DLL文件內
   增強EmailContact Web控件

  本文中的定制EmailContact Web控件(參考圖)允許在你的站點中加入一個contact us表單它具有完整的電子郵件功能在本文中我將使用該功能增強這一控件



缺省狀態下的EmailContact控件
   一個新的基類

  以前開發者都是從WebControl類派生他們的可視化Web控件我之所以在此使用了可視化一詞是因為典型情況上沒有在浏覽器中生成任何內容的控件都是派生自Control類這一點並沒有改變你應該繼續使用該Control類來派生任何這樣的非可視化控件它們執行不可見功能或在浏覽器中生成除可視化HTML內容之外的任何其它內容而且在開發可視化Web控件時你還應該繼續使用WebControl類然而我們所開發的大多數復合控件都是為了利用現有控件的功能在這種情況下你應該總是從WebControl類進行派生但是你還要記住另外一些有關細節否則的話有可能導致許多問題

  復合控件必須實現INamingContainer接口並且需要包括在你的控件類中這個接口能夠確保在你的控件及其可以生成的整個控件層次中的所有的HTML標簽中都具有唯一的標簽命名當你在單個頁面上存在多個相同類型的復合控件的情況下這是相當關鍵的在這樣的情況下你需要確保任何生成的子元素都具有唯一的名稱忘記實現該接口能夠導致各種問題的出現

  在ASPNET 以前復合控件開發者還需要記住在一個控件的Render方法中調用EnsureChildControls在我以前的文章中曾經向你介紹如何重載該Render方法並且在調用基類的Render方法前調用這個方法要使控件在Visual Studio設計時刻正確生成這一步是必要的否則有可能帶來許多不便

  上面兩個步驟在復合控件開發中如此普遍以致於許多開發者往往都會構建一個包括這兩個細節的基類然後從該基類下派生他們所有的新的復合控件作為代替ASPNET 提供了(更准確地說是名字為)CompositeControl借助於這個類來構建你的復合控件你就不必再記住實現INamingContainer或從Render方法中執行一個EnsureChildControls調用了

  另外還存在其它一些新的基類例如用於數據綁定的控件等在此不再贅述
From:http://tw.wingwit.com/Article/program/net/201311/13316.html
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.