明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

用戶控件與自定義控件的比較及在項目中的應用

[摘要]用戶控件和自定義控件的比較及在項目中的應用 摘 要 本文檔描述了服務器控件的基本概念,以及用戶控件和自定義控件在部署、創(chuàng)建、內容和布局、設計期行為、性能幾個方面的比較,然后給出一個在項目開發(fā)中服務...
用戶控件和自定義控件的比較及在項目中的應用

摘 要

本文檔描述了服務器控件的基本概念,以及用戶控件和自定義控件在部署、創(chuàng)建、內容和布局、設計期行為、性能幾個方面的比較,然后給出一個在項目開發(fā)中服務器控件使用的建議,最后給出一個用戶控件的創(chuàng)建和調用的例子。 關 鍵 詞 Server Control 服務器控件 User Control 用戶控件,ASP.NET服務器控件的一種(一般后綴名為.ASCX文件) Custom Control 自定義控件,ASP.NET服務器空間的一種(一般后綴名為.DLL文件) Deployment 部署,程序的分發(fā) Design Attribute 設計期屬性 RAD 快速應用程序開發(fā) 修 改 履 歷 版本號版本完成日期作者修改內容描述修改處涉及章節(jié)



1. 知識背景

1.1服務器控件簡介 服務器控件是ASP.NET頁面中用來定義WEB應用程序用戶界面的組件。服務器控件是Web Forms 編程模式的基本元素。他們構成了一個新的,基于組件的,直觀的表單程序的基礎,可以簡化Web用戶界面的開發(fā)。這類似與 Microsoft Visual Basic/Borland Delphi等傳統(tǒng)RAD開發(fā)工具用來簡化Windows Forms編程的方法。從更高的層次來說,服務器控件提供了Web應用程序和表示技術隱含的抽象概念 1.2服務器控件的特征和功能

1:服務器控件隱藏了技術中潛在的不一致性和復雜性,給網頁開發(fā)者創(chuàng)建了一個直觀且簡單的編程模式

2:服務器控件隱藏了各種瀏覽器與查看設備之間的不同,包括目標Web應用程序可能需要的不同版本的瀏覽器。瀏覽器控件提供了適于目標瀏覽器內容顯示的能力 。

3:服務器控件起到實際組件的作用,提供在組件與其他類應用合作中可能得到的相同好處。

4:服務器控件通過回傳(PostBack)和往返(Round-Trip)的方式管理狀態(tài)

5:服務器控件包含了處理相關Web請求的回傳數據及網頁開發(fā)者處理其服務器端代碼中用戶輸入和用戶動作的邏輯模型。

6:服務器控件提供數據綁定模型。

7:服務器控件為開發(fā)者提供多種機制定制自己的頁面生成(Rending).

8:服務器控件在機器級別(通過 Machine.config文件)或者在Web應用程序級別上(通過Web.config文件)是可配置的。

9:在Visual Sturdio.Net這樣的可視化設計期環(huán)境中,服務器控件提供了一種快速應用開發(fā)(Rapid Application Development,RAD)環(huán)境

2. 為什么編寫自定義服務器控件

雖然標準ASP.NET服務器控件能解決最常用的應用程序方案,當它不詳盡。實際上,有很多方案不能直接用這些控件解決。例如,標準 ASP.NET服務器控件不能解決圖像映射,制圖功能等。以下是開發(fā)服務器控件的幾個原因:

1:以多個Web應用程序中可復用的和直觀的抽象概念形式封裝應用程

序邏輯。

2:創(chuàng)建商業(yè)的組件類庫,類似與Visual Basic中的Active控件和Delphi

中的VCL控件。

3:在大型工作團隊中為分工提供一個明確的機制。例如在工作團隊

中的開發(fā)者可以通過設計和實現應用程序用戶界面的開發(fā)工具把控件

組合在一起。

3. 用戶控件和自定義控件的異同服務器控件分為用戶控件模型和自定義控件,一般而言,用戶控件模型適合創(chuàng)建內部,應用程序特定的控件,而自定義控件模型更適合創(chuàng)建通用的和可再分發(fā)的控件,

下面從6個方面來說明他們的異同。

3.1部署當在兩個控件模型之間進行選擇的時候,部署是最重要的考慮因素,自定義控件模型采用大多數應用程序可以使用的配件形式(.DLL形式),為創(chuàng)建可再分發(fā)的組件而設計。用戶控件模型是為單個應用程序的情況設計的。用戶控件必須以源代碼形式部署(.ASCX文件),這些需求有增加維護成本的副作用。

3.2創(chuàng)建創(chuàng)建自定義控件的技術與創(chuàng)建用戶控件的技術是不相同的,自定義控件是用.NET編程語言通過編寫一個從 System.Web.UI.Control類中直接或間接派生的托管類而創(chuàng)建。這里沒有對創(chuàng)建自定義控件的提供設計器支持。但是用戶控件類間接地從System.Web.UI.Control派生而來,用戶控件以.ASCX文件的形式聲明性地創(chuàng)建,這類似于設計和開發(fā)ASP.NET頁面的方式(易于設計和調試)。

3.3內容和布局由于創(chuàng)建機制的不同,用戶控件和自定義控件提供不同的內容和布局支持自定義控件非常適用于通過編程方式生成的布局中所表現的動態(tài)內容。例如一個具有動態(tài)行的數據綁定控件,一個動態(tài)節(jié)點的控件樹。用戶控件的布局在.ASCX文件創(chuàng)建時聲明,所以當需要固定布局的相對靜態(tài)的內容時,用戶控件是最好的選擇.

3.4設計期行為目前,Visual Studio .Net為自定義控件和用戶控件提供了相當不同的設計期能力。Visual Studio .Net為自定義控件提供很大程度的設計期支持功能,比如可以支持設計時屬性,方法。Visual Studio .Net對用戶控件只擁有很少的設計期支持。用戶控件并不在屬性窗口中顯示屬性和事件,也不能放到工具箱中。

3.5性能雖然自定義控件和用戶控件遵循著不同的創(chuàng)建模型并且有不同的特性,但這兩個控件都是從相同的基類(System.Web.UI.Control)間接地派生的,用戶控件在實現時聲明性,在頁面中第一次使用它的時候,用戶控件作為普通的服務器控件被解析并編譯進配件中。此后用戶控件的行為就象任何其它的編譯的(或者自定義)控件一樣,所以性能上差別不是很大,主要從其他方面來考慮怎么選擇這兩種控件。

4. 服務器控件開發(fā)情況的建議服 務 器 控 件 開 發(fā) 情 況 的 建 議情 況建議





5 用戶控件的開發(fā)下面用一個例子來簡述一個用戶控件的開發(fā)過程.(通過把已存在的ASP.NET的部分頁面轉換成用戶控件模型).

Query_UC_Common.ascx源文件

頁面到自定義控件需要修改的部分

注:頁面到自定義控件需要修改的部分

1:刪除標記<html><bodry><head>

2: 把<%@ Page Language="c#" ClassName="RequiredTextField" %>該為<%@ Control Language="c#" ClassName="RequiredTextField" %>

3: 把文件存為.ASCX文件即可




注意:在頁面中調用用戶控件的說明

1:為用戶控件的聲明語句,

2:TagPrefix:TagName結合生成一個標簽,服務器解析時把它與指定的用戶控件關聯(lián)在一起,這個結合對已注冊的每個用戶控件必須是唯一的。 3: Src="Query_UC_Common.ascx”為用戶控件在位置,可以是相對路徑也可以是絕對路徑,但是一定是該頁面用戶可以訪問到的由于這個通用查詢顯示和打印的用戶控件涉及的知識點太多,我會在以后專門寫個分析報告,跟大家一起來討論!

界面截圖如下:



查詢設置界面過濾顯示字段





6 參考資料

1:MSDN ONLINE

2:Vs.Net 2002 MSDN

3:Developing ASP.NET Server Controls