什麼是Web User Control
如果你記得Microsoft公司先前在組建開發上的嘗試,你一定很熟悉ActiveX控制項或者ASP包含檔案。這些控制項和引用檔案可以實現功能的分離和重用。ASP.NET Web User Control(網路使用者控制項)就是它們最新的成員。一個網路使用者控制項(Web User Control)就是一個獨立的實體,它可以在其他的元素(elements)如Web表單 (Web forms)中被調用。
大多數Web程式的一個公用元素就是導航條,一般放在頁面的左側。導航條在使用者程式應用中往往被認為是靜態(或接近於靜態),這對於導航條代碼的編寫是適得其反,這將大大影響你的開發時間。當你對導航條進行修改時這種副作用就更為嚴重,此時就是網路使用者控制項(Web User Control)大顯身手的時候了。
獨立的元素(elements)
網路使用者控制項(Web User Control)可能簡單也可能複雜,這要根據你的需要來定奪。而且它也有可能包含一些其他網路使用者控制項(Web User Controls)。
下面這個簡單的例子就可以顯示出這些元素的強大功能和實用性,我將為一個非常簡單的網站導覽條元素(elements)建立一個使用者控制項(control)。導航條的內容是用HTML編寫。
〈div style="FONT-WEIGHT: bold; MARGIN: 30px 0px 0px 50px; CURSOR: hand; COLOR: green; FONT-FAMILY: Georgia, 'Times New Roman', Serif; POSITION: static">
〈label>Navigation
〈div>
〈div style="FONT-WEIGHT: bold; MARGIN: 70px 0px 0px 50px; CURSOR: hand; COLOR: green; FONT-FAMILY: Georgia, 'Times New Roman', Serif; POSITION: static">
〈a href=" http://www.builderau.com.au/">BuilderAU.com.au
〈div>
〈div style="FONT-WEIGHT: bold; MARGIN: 110px 0px 0px 50px; CURSOR: hand; COLOR: green; FONT-FAMILY: Georgia, 'Times New Roman', Serif; POSITION: static">
〈a href=" http://www.zdnet.com.au">ZDNet Australia
〈div> 〈br>
通過使用基本HTML語言中的CSS方式來放置元素,導航條的內容包括兩個連結和一個標題,網路使用者控制項(Web User Controls)的語句放在Web表單(form)語句的後面,對整頁的指令進行聲明。
我們也可以使用下面的指令來完成我們的例子:
〈@ Control Language="c#" AutoEventWireup="false"
Codebehind="Navigation.ascx.cs"
Inherits="WebApplication1.Navigation" %>
這些語句緊跟在Web表單(form)指令後。與word的控制項不同,代碼不是放在頁面中。這個不同點是很重要的,因為我經常在進行控制項代碼的測試時要先在一個規則表單(Web form)裡驗證結果。如果運行正確,就可以很容易地粘貼到一個網路使用者控制項Web User Control中。
控制項(controls)的使用
控制項滿足你的要求之後,就可以在一個Web表單(form)中使用這些控制項。一種方法就是從解決方案管理器Solution Explorer拖放到Web表單(form)模版中(假如你是使用Visual Studio .NET)。另外一種方法就是把它引入到Web表單(form)的源檔案裡(在拖放時這些是被自動添加的)。控制項在被使用前一定要先在頁面中引用。下面就是註冊指令的語句:
〈%@ Register TagPrefix="uc1"
TagName="Navigation" Src="Navigation.ascx" %>
註冊語句的每一個屬性如下:
* TagPrefix: 分配給使用者控制項的首碼,這允許你關聯相關的控制項並避免命名的衝突。
* TagName: 使用者控制項的名字,當添加一個控制項到頁面時使用這一屬性。
* Src: 使用者控制項檔案的路徑,控制項檔案的副檔名是ascx,但在標準的ASP.NET 頁面中為aspx 。
當控制項註冊成功後,你可以用與TagPrefix和TagName相同的標籤名來使用它,接下來的例子就是使用我們的導航條控制項。
〈uc1:Navigation id="Navigation1" runat="server">
〈/uc1:Navigation>
由於多個控制項可能放置在一個頁面中,另外有可能使用多個公用函數或屬性,所以你應該注意它與註冊指令的一致性。
另外一個問題就是控制項在頁面中的放置方式。我們的控制項是使用CSS方式來放置它的元素(elements),頁面中的元素也同樣可以利用這种放置方式實現較好的布置。
應用展望
使用者控制項是一個極好的開發工具,一個程式不可能把它的各個屬性賦予使用者控制項,但是其它的元素卻可以實現這些功能。為了開發一個穩定的可升級的應用程式,你的開發小組就應該在開發階段認真地檢查這些元素。在工程開發的後期,把一個元素轉化成一個使用者控制項最終將展示出它的高效性。
題外話
你可能會認為使用者控制項只不過是引入檔案,但那並不符合實際情形,實際上開發人員掌握了隱藏在控制項代碼後面的功能——動態地改變使用者控制項的元素(elements)(雖然引用檔案是靜態)。