一、簡介
在許多Web應(yīng)用程序中,能夠更改內(nèi)容的外觀以及允許用戶選擇和排列要顯示的內(nèi)容是非常有用的。ASP.NET Web Part功能由一組用于創(chuàng)建網(wǎng)頁的控件組成,這些控件能顯示模塊化內(nèi)容并允許用戶更改外觀和內(nèi)容。
在本示例中,我將創(chuàng)建一個使用Web Part控件集的頁面,用于創(chuàng)建用戶可以修改或進(jìn)行個性化設(shè)置的網(wǎng)頁。本示例具體實(shí)現(xiàn)如下任務(wù):
◆向頁添加Web Part控件。
◆創(chuàng)建一個自定義用戶控件,并將其用作Web Part控件。
◆允許用戶對頁面上的Web Part控件的布局進(jìn)行個性化設(shè)置。
◆允許用戶編輯Web Part控件的外觀。
◆允許用戶從可用Web Part控件的目錄中進(jìn)行選擇。
(一)先決條件
若要完成本示例,您需要:
◆可標(biāo)識各個用戶的站點(diǎn)。如果您有一個已配置了ASP.NET成員資格的站點(diǎn),則可以使用該站點(diǎn)作為本示例的起點(diǎn)。
◆配置過的個性化設(shè)置提供程序和數(shù)據(jù)庫。Web Part個性化設(shè)置默認(rèn)情況下是啟用的,它使用SQL個性化設(shè)置提供程序(SqlPersonalizationProvider)以及Microsoft SQL Server Exprss Edition(SSE)存儲個性化設(shè)置數(shù)據(jù)。此示例使用SSE和默認(rèn)的SQL提供程序。如果安裝了SSE,則不需要進(jìn)行任何配置。SSE在安裝Microsoft Visual Studio 2005時(shí)作為可選部分免費(fèi)提供,也可以從Microsoft.com免費(fèi)下載。若要使用SQL Server的某個完整版本,必須安裝和配置ASP.NET應(yīng)用程序服務(wù)數(shù)據(jù)庫,并配置SQL個性化設(shè)置提供程序以連接到該數(shù)據(jù)庫。當(dāng)然,你也可以創(chuàng)建和配置自定義提供程序,以便使用其他非SQL數(shù)據(jù)庫或存儲解決方案。
【注】本文程序調(diào)試環(huán)境為Windows XP Professional+VS2005。
二、案例分析
現(xiàn)在,我們開始創(chuàng)建一個使用Web Part控件顯示靜態(tài)內(nèi)容的頁面。使用Web Part的第一步是創(chuàng)建具有兩個必需的結(jié)構(gòu)元素的頁面。首先,Web Part頁需要一個WebPartManager控件來跟蹤和協(xié)調(diào)所有Web Part控件;其次,Web Part頁需要一個或多個區(qū)域(區(qū)域即“Zone”,是包含WebPart或其他服務(wù)器控件并且占據(jù)頁面上指定區(qū)域的復(fù)合控件)。
【注意】您無需執(zhí)行任何操作即可啟用Web Part個性化設(shè)置;Web Part控件集默認(rèn)情況下即啟用該設(shè)置。在站點(diǎn)上第一次運(yùn)行Web Part頁時(shí),ASP.NET會設(shè)置默認(rèn)的個性化設(shè)置提供程序來存儲用戶個性化設(shè)置。
(一)創(chuàng)建包含Web Part控件的頁面
1.啟動VS2005,創(chuàng)建一個ASP.NET網(wǎng)站W(wǎng)ebPartsDemo,并將默認(rèn)頁面Default.aspx重命名為WebPartsDemo.aspx。
2.切換到“設(shè)計(jì)”視圖。
3.確保在“視圖”菜單中選中“非可視控件”和“詳細(xì)信息”選項(xiàng),以便查看不具有用戶界面的布局標(biāo)記和控件。
4.在設(shè)計(jì)圖面上將插入點(diǎn)放在標(biāo)記前,然后按Enter添加一個新行。將插入點(diǎn)放在新行字符前,單擊菜單上的“塊格式”下拉列表控件,再選擇選項(xiàng)“標(biāo)題1”。在該標(biāo)題中添加文本“Web Part應(yīng)用演示”。
5.從工具箱的“WebParts”選項(xiàng)卡中,將一個WebPartManager控件拖動到頁上,并將它放置在新行字符之后,標(biāo)記之前。
【注】WebPartManager控件不呈現(xiàn)任何輸出,因此在設(shè)計(jì)器圖面上顯示為灰框。
6.將插入點(diǎn)放置在標(biāo)記內(nèi)。
7.在“布局”菜單中單擊“插入表”,然后創(chuàng)建一個包含一行三列的表。單擊“單元格屬性”按鈕,從“垂直對齊”下拉列表中選擇“頂端對齊”,單擊“確定”創(chuàng)建表格。
8.將一個WebPartZone控件拖動到該表左邊的列中,并設(shè)置下面相應(yīng)的屬性:
◆ID—SidebarZone;
◆HeaderText—“側(cè)欄”;
9.再次將一個WebPartZone控件拖動到該表中間的列中,并設(shè)置下面的屬性:
◆ID—MainZone;
◆HeaderText—“主要”;
10.保存文件。
現(xiàn)在,頁面中具有兩個能夠單獨(dú)控制的不同區(qū)域。但是,這兩個區(qū)域中都沒有任何內(nèi)容,因此下一步就是創(chuàng)建內(nèi)容。此示例中使用的是僅顯示靜態(tài)內(nèi)容的Web Part控件。
Web Part區(qū)域的布局由元素指定。在區(qū)域模板內(nèi)可以添加任何ASP.NET控件,無論是自定義Web Part控件、用戶控件還是現(xiàn)有服務(wù)器控件。注意,本例中使用的是Label控件,其中僅添加了靜態(tài)內(nèi)容。如果在WebPartZone區(qū)域中放置常規(guī)服務(wù)器控件,則在運(yùn)行時(shí),ASP.NET將該控件視為Web Part控件,并在控件上啟用Web Part功能。
(二)為主要區(qū)域創(chuàng)建內(nèi)容
1.從工具箱的“標(biāo)準(zhǔn)”選項(xiàng)卡中將一個Label控件拖動到ID屬性設(shè)置為MainZone的區(qū)域的內(nèi)容區(qū)域中。
2.切換到“源”視圖。注意,系統(tǒng)自動添加了一個元素來包裝MainZone中的Label控件。
3.為元素添加一個名為title的屬性,并將屬性值設(shè)置為“Content”,并從元素中移除Text="Label"屬性。然后,在元素的開始標(biāo)記和結(jié)束標(biāo)記之間添加一些文本,例如在一對元素標(biāo)記之間添加文本“歡迎訪問本主頁”。代碼如下所示。
<asp:webpartzone id="MainZone" runat="server" headertext="主要">
<zonetemplate>
<asp:label id="Label1" runat="server" title="內(nèi)容">
<h2>歡迎訪問本主頁</h2>
</asp:label>
</zonetemplate>
</asp:webpartzone>
|
4.保存文件。
接下來,創(chuàng)建一個也可以作為Web Part控件添加到頁面中的用戶控件。
(三)創(chuàng)建用戶控件
本例中,我將一個新的Web用戶控件添加到站點(diǎn)中,充當(dāng)搜索控件。將該控件放在WebPartsDemo.aspx頁所在的目錄中,并將其命名為SearchUserControl.ascx。
【注意】此示例的用戶控件并不實(shí)現(xiàn)實(shí)際的搜索功能;它僅用于演示W(wǎng)eb部件功能。
1.切換到“設(shè)計(jì)”視圖。從工具箱的“標(biāo)準(zhǔn)”選項(xiàng)卡中,將TextBox控件拖動到頁面上。
2.將插入點(diǎn)放在剛添加的文本框之后,再按Enter添加一個新行。
3.將Button控件拖動到頁面上剛添加的文本框下面的新行上。
4.切換到“源”視圖,并確保用戶控件的源代碼如下所示:
<%@ control language="C#" classname="SearchUserControl" %>
<asp:textbox runat="server" id=" TextBox1"></asp:textbox>
<br />
<asp:button runat="server" id=" Button1" text="搜索" />
|
5.保存并關(guān)閉文件。
接下來,我們將向側(cè)欄區(qū)域添加Web Part控件—將向側(cè)欄區(qū)域添加兩個控件:一個包含鏈接列表,另一個則是在前面創(chuàng)建的用戶控件。鏈接是作為標(biāo)準(zhǔn)Label服務(wù)器控件添加的,添加方法類似于為主要區(qū)域創(chuàng)建靜態(tài)文本。雖然用戶控件中包含的各個服務(wù)器控件都可直接包含在該區(qū)域中(類似標(biāo)簽控件),但在本示例中不是這樣。相反,它們是在前面的過程中創(chuàng)建的用戶控件的一部分。這演示了將所需控件和其他功能打包到用戶控件中,然后在某個區(qū)域中將該控件作為Web Part控件引用的常用方式。
運(yùn)行時(shí),Web Part控件集將這兩個控件都包裝在GenericWebPart控件中。當(dāng)GenericWebPart控件包裝Web服務(wù)器控件時(shí),GenericWebPart為父控件,您可以通過該父控件的ChildControl屬性訪問服務(wù)器控件。
【注意】GenericWebPart控件能夠使標(biāo)準(zhǔn)Web服務(wù)器控件具有與從WebPart類派生的Web Part控件相同的基本行為和屬性。
(四)向側(cè)欄區(qū)域添加Web Part控件
1.打開WebPartsDemo.aspx頁。
2.切換到“設(shè)計(jì)”視圖。
3.將已創(chuàng)建的用戶控件頁SearchUserControl.ascx從“解決方案資源管理器”拖放到ID屬性設(shè)置為SidebarZone的區(qū)域中。
4.保存WebPartsDemo.aspx頁面。
5.切換到“源”視圖。
6.在SidebarZone的元素內(nèi),對用戶控件的引用之上,添加一個包含了鏈接的元素;另外,將Title屬性添加到用戶控件標(biāo)記,屬性值為“搜索”,如下所示:
<asp:WebPartZone id="SidebarZone" runat="server"
headertext="側(cè)欄">
<zonetemplate>
<asp:label runat="server" id="linksPart" title="我的鏈接">
<a href="/‘>http://www.">ASP.NET網(wǎng)站</a>
<br />
<a href="gotdotnethttp://www.">GotDotNet</a>
<br />
<a href="http://www.">Contoso.com</a>
<br />
</asp:label>
<uc1:SearchUserControl id="searchPart" runat="server"
title="搜索" />
</zonetemplate>
</asp:WebPartZone>
|
7.保存并關(guān)閉文件。
(五)測試頁面
在瀏覽器中加載WebPartsDemo.aspx頁面,結(jié)果應(yīng)該如下圖1所示。

圖1.具有兩個區(qū)域的Web Part演示頁
該圖中,每個控件的標(biāo)題欄中都有一個向下的箭頭,用于提供對控件上可執(zhí)行操作的動作菜單的訪問。單擊其中一個控件的動作菜單,然后單擊“最小化”,會發(fā)現(xiàn)該控件被最小化。在動作菜單上單擊“還原”,控件還原為正常大小。
(六)支持用戶更改布局和編輯頁面
Web Part為用戶提供了通過將Web Part控件從一個區(qū)域拖動到另一個區(qū)域來更改其布局的功能。除了允許用戶將WebPart控件從一個區(qū)域移動到另一個區(qū)域外,還允許用戶編輯控件的各種特征—包括外觀、布局和行為。Web Part控件集為WebPart控件提供了基本的編輯功能。
【注】本示例中,我們僅實(shí)現(xiàn)了基本的編輯功能,但您可以創(chuàng)建自定義編譯控件來允許用戶編輯WebPart控件的功能。和更改WebPart控件的位置一樣,編輯控件屬性時(shí)需要由ASP.NET個性化設(shè)置來保存用戶所做的更改。
下面,我們將為用戶添加相應(yīng)的功能,使之能編輯頁面上所有WebPart控件的基本特性。若要啟用這些功能,應(yīng)向頁面中添加其它自定義控件以及一個元素和兩個編輯控件。
1.創(chuàng)建支持對頁面布局進(jìn)行更改的用戶控件
(1)在Visual Studio中,選擇“文件→新建”菜單,然后單擊“文件”選項(xiàng)。
(2)在“添加新項(xiàng)”對話框中,選擇“Web用戶控件”。將新文件命名為DisplayModeMenu.ascx,并取消選項(xiàng)“將源代碼放在單獨(dú)的文件中”。
(3)單擊“添加”新建控件。
(4)切換到“源”視圖。
(5)按如下內(nèi)容修改源碼(此用戶控件允許用戶更改其視圖和顯示模式的Web Part控件集功能,并允許您在某種顯示模式下更改頁面的物理外觀和布局):
<%@ control language="C#" classname="DisplayModeMenuCS"%>
<%@ control language="C#" classname="DisplayModeMenuCS"%>
<script runat="server">
//定義一個引用當(dāng)前WebPartManager控件的變量
WebPartManager _manager;
void Page_Init(object sender, EventArgs e)
{
Page.InitComplete += new EventHandler(InitComplete);
}
void InitComplete(object sender, System.EventArgs e)
{
_manager = WebPartManager.GetCurrentWebPartManager(Page);
String browseModeName = WebPartManager.BrowseDisplayMode.Name;
//使用支持的顯示方式填充下拉列表框
foreach (WebPartDisplayMode mode in _manager.SupportedDisplayModes)
{
String modeName = mode.Name;
//在添加之前,確保支持這種方式
if (mode.IsEnabled(_manager))
{
ListItem item = new ListItem(modeName, modeName);
DisplayModeDropdown.Items.Add(item);
}
}
//如果共享范圍適用于該用戶,則顯示
//范圍切換UI并且選擇相應(yīng)于當(dāng)前用戶范圍的適當(dāng)?shù)膯芜x按鈕
if (_manager.Personalization.CanEnterSharedScope)
{
Panel2.Visible = true;
if (_manager.Personalization.Scope == PersonalizationScope.User)
RadioButton1.Checked = true;
else
RadioButton2.Checked = true;
}
}
//把頁面改變?yōu)檫x擇的顯示方式
void DisplayModeDropdown_SelectedIndexChanged(object sender,
EventArgs e)
{
String selectedMode = DisplayModeDropdown.SelectedValue;
WebPartDisplayMode mode =
_manager.SupportedDisplayModes[selectedMode];
if (mode != null)
_manager.DisplayMode = mode;
}
//把選項(xiàng)設(shè)置為當(dāng)前的顯示方式
void Page_PreRender(object sender, EventArgs e)
{
ListItemCollection items = DisplayModeDropdown.Items;
int selectedIndex =
items.IndexOf(items.FindByText(_manager.DisplayMode.Name));
DisplayModeDropdown.SelectedIndex = selectedIndex;
}
//復(fù)位頁面中的所有用戶個性化數(shù)據(jù)
protected void LinkButton1_Click(object sender, EventArgs e)
{
_manager.Personalization.ResetPersonalizationState();
}
//如果還不是在用戶個性化范圍內(nèi),則切換到其中
protected void RadioButton1_CheckedChanged(object sender, EventArgs e)
{
if (_manager.Personalization.Scope ==
PersonalizationScope.Shared)
_manager.Personalization.ToggleScope();
}
//如果還不是在共享范圍內(nèi),并且用戶已擁有權(quán)限,則切換范圍
protected void RadioButton2_CheckedChanged(object sender,
EventArgs e)
{
if (_manager.Personalization.CanEnterSharedScope &&
_manager.Personalization.Scope ==
PersonalizationScope.User)
_manager.Personalization.ToggleScope();
}
</script>
<div>
<asp:Panel ID="Panel1" runat="server"
Borderwidth="1"
Width="230"
BackColor="lightgray"
Font-Names="Verdana, Arial, Sans Serif" >
<asp:Label ID="Label1" runat="server"
Text=" 顯示方式"
Font-Bold="true"
Font-Size="8"
Width="120" />
<asp:DropDownList ID="DisplayModeDropdown" runat="server"
AutoPostBack="true"
Width="120"
OnSelectedIndexChanged="DisplayModeDropdown_SelectedIndexChanged" />
<asp:LinkButton ID="LinkButton1" runat="server"
Text="復(fù)位用戶狀態(tài)"
ToolTip="復(fù)位頁面中當(dāng)前用戶的個性化數(shù)據(jù)。"
Font-Size="8"
OnClick="LinkButton1_Click" />
<asp:Panel ID="Panel2" runat="server"
GroupingText="個性化范圍"
Font-Bold="true"
Font-Size="8"
Visible="true" >
<asp:RadioButton ID="RadioButton1" runat="server"
Text="用戶"
AutoPostBack="true"
GroupName="Scope"
OnCheckedChanged="RadioButton1_CheckedChanged" />
<asp:RadioButton ID="RadioButton2" runat="server"
Text="共享"
AutoPostBack="true"
GroupName="Scope"
OnCheckedChanged="RadioButton2_CheckedChanged" />
</asp:Panel>
</asp:Panel>
</div>
|
(6)保存文件。
2.允許用戶更改布局
(1)打開WebPartsDemo.aspx頁,并切換到“設(shè)計(jì)”視圖。
(2)在“設(shè)計(jì)”視圖中將插入點(diǎn)放在以前添加的WebPartManager控件之后。在文本后添加一個硬回車,這樣會在WebPartManager控件之后生成一個空行。將插入點(diǎn)放置在空行上。
(3)將剛創(chuàng)建的用戶控件(文件名為DisplayModeMenu.ascx)拖動到WebPartsDemo.aspx頁上,并放置在空行上。
(4)將一個EditorZone控件從工具箱的“WebParts”部分拖動到WebPartsDemo.aspx頁面上表格最右邊的一個單元格中。
(5)從工具箱的“WebParts”部分將一個AppearanceEditorPart控件和一個LayoutEditorPart控件拖動到EditorZone控件上。
(6)切換到“源”視圖。于是,上面單元格中相應(yīng)的代碼類似如下。
<td valign="top">
<asp:EditorZone ID="EditorZone1" runat="server">
<ZoneTemplate>
<asp:AppearanceEditorPart ID="AppearanceEditorPart1"
runat="server" />
<asp:LayoutEditorPart ID="LayoutEditorPart1" runat="server" />
</ZoneTemplate>
</asp:EditorZone>
</td>
|
【注意】本示例中僅使用了AppearanceEditorPart和LayoutEditorPart控件,而沒有使用BehaviorEditorPart和PropertyGridEditorPart控件。
(7)保存WebPartsDemo.aspx文件。至此,我們已經(jīng)創(chuàng)建了允許更改顯示模式和更改頁面布局的用戶控件,并且在主頁面上引用了該控件。
下面,我們開始測試編輯頁面和更改布局的功能。
3.測試布局更改
(1)在瀏覽器中加載頁面。
(2)單擊“顯示模式”下拉菜單,再選擇“Edit”;隨即顯示區(qū)域標(biāo)題。
(3)通過“鏈接”控件的標(biāo)題欄將該控件從側(cè)欄區(qū)域拖動到主要區(qū)域的底部。最終,頁面的外觀應(yīng)類似下面的圖2所示。

圖2.包含“鏈接”控件的Web Part演示頁
(4)單擊“顯示模式”下拉菜單,再選擇“Browse”。頁面被刷新,區(qū)域的名稱消失,“鏈接”控件的位置保持不變。
(5)若要演示個性化設(shè)置的運(yùn)行情況,請關(guān)閉瀏覽器,然后重新加載該頁面。會保存所做的更改,以備以后的瀏覽器會話使用。
(6)從“顯示模式”菜單中選擇“Edit”。
(7)頁面上的每個控件的標(biāo)題欄中現(xiàn)在均顯示有一個向下的箭頭,其中包含一個謂詞下拉菜單。
(8)單擊箭頭顯示“鏈接”控件上的謂詞菜單。單擊“Edit”謂詞。
(9)隨即出現(xiàn)EditorZone控件,并顯示添加的EditorPart控件。
(10)在編輯控件的“外觀”部分,將標(biāo)題更改為“我的收藏夾”,使用“鑲邊類型”下拉列表來選擇“只有標(biāo)題”,然后單擊“應(yīng)用”。下面的圖3顯示了該頁面處于編輯模式時(shí)的情形。

圖3.編輯模式下的Web Part演示頁
(11)單擊“顯示模式”菜單,再選擇“Browse”以返回到瀏覽模式。
(12)現(xiàn)在,該控件具有更新了的標(biāo)題但沒有邊框,如下面的圖4所示。

圖4.編輯過的Web Part演示頁
(七)在運(yùn)行時(shí)添加Web Part
還可以允許用戶在運(yùn)行時(shí)向頁面中添加Web Part控件。為此,應(yīng)為WebPartsDemo.aspx頁面配置Web Part目錄—由它給用戶提供可添加的Web Part控件列表。
【注意】在本示例中,我們創(chuàng)建一個包含F(xiàn)ileUpload和Calendar控件的模板。在此,我們僅為了測試該目錄的基本功能,但得到的Web Part控件不會具有任何實(shí)際的功能。
1.允許用戶在運(yùn)行時(shí)添加Web Part
(1)打開WebPartsDemo.aspx頁面,并切換到“設(shè)計(jì)”視圖。
(2)從工具箱的“WebParts”選項(xiàng)卡中將一個CatalogZone控件拖動到表格最右邊的列中,并放在EditorZone控件的下方。
【注意】這兩個控件可放在同一個表格單元格中,因?yàn)樗鼈儾粫瑫r(shí)顯示。
(3)在“屬性”窗格中,設(shè)置CatalogZone控件的HeaderText屬性為“添加Web Parts”。
(4)從工具箱的“WebParts”部分將一個DeclarativeCatalogPart控件拖動到CatalogZone控件的內(nèi)容區(qū)域。
(5)單擊DeclarativeCatalogPart控件右上角中的箭頭,顯示其“任務(wù)”菜單,然后選擇“編輯模板”。
(6)從工具箱的“標(biāo)準(zhǔn)”部分將一個FileUpload控件和一個Calendar控件拖動到DeclarativeCatalogPart控件的“WebPartsTemplate”部分。
(7)切換到“源”視圖。觀察元素的源代碼。注意,DeclarativeCatalogPart控件中包含了一個元素以及兩個可從目錄添加到頁面中的服務(wù)器控件。
【提示】顯然,在DeclarativeCatalogPart控件的“WebPartsTemplate”部分中也可以加入你的自定義Web控件或用戶控件—如果你愿意的話。
(8)為添加到目錄中的每個控件添加Title屬性。
【問題】這是否又是微軟的一個小紕漏?開始加入控件時(shí),只顯示Caption屬性,但是在目錄區(qū)域中顯示單選框時(shí),則只能使用Title屬性,因此這里只得手工添加,而且可以去掉原有的Caption屬性,見下面的代碼。另外,雖然Title并非在設(shè)計(jì)時(shí)通??稍谶@兩個服務(wù)器控件上設(shè)置的屬性,但當(dāng)用戶在運(yùn)行時(shí)刻將這些控件從目錄添加到WebPartZone區(qū)域時(shí),這些控件均包裝在GenericWebPart控件中。這使它們可以“充當(dāng)”Web Part控件,而且它們可以顯示此標(biāo)題。
<asp:DeclarativeCatalogPart ID="DeclarativeCatalogPart1"
runat="server">
<WebPartsTemplate>
<asp:Calendar ID="Calendar1"
runat="server"
title="我的日歷" />
<asp:FileUpload ID="FileUpload1"
runat="server"
title="上傳文件" />
</WebPartsTemplate>
</asp:DeclarativeCatalogPart>
|
(9)保存頁面。
下面,我們可以測試此目錄功能了。
2.測試Web Part目錄
(1)在瀏覽器中加載頁面。
(2)單擊“顯示模式”下拉菜單并選擇“Catalog”,則會顯示位于表格最右邊的標(biāo)題為“添加Web Part”的目錄區(qū)。
(3)將“我的收藏夾”控件從主要區(qū)域拖回側(cè)欄區(qū)域頂部。
(4)在“添加Web Part”目錄中,選擇兩個復(fù)選框,再從包含可用區(qū)域的下拉列表中選擇“主要”。
(5)單擊目錄區(qū)域的“添加”;此時(shí),相應(yīng)的被添加到主要區(qū)域中。如果愿意,可將控件的多個實(shí)例從目錄添加到頁面中。
下圖5是加入上面兩個控件后的結(jié)果頁面,其中包括文件上載控件和主要區(qū)域中的日歷控件。

圖5.從目錄區(qū)域添加到主要區(qū)域的控件(充當(dāng)Web Part)
(6)單擊“顯示模式”下拉菜單,再選擇“Browse”,則目錄消失,頁面隨即被刷新。
(7)關(guān)閉瀏覽器,再次加載該頁面,上次所做的更改會被保存下來。
三、小結(jié)
本文僅提供了在ASP.NET網(wǎng)頁上使用Web Part控件的基本示例。正如在前面的【理論篇】中所述,Web Part控件的應(yīng)用包括三大方面;其中,基于Web Part控件的Web控件開發(fā)與創(chuàng)建基于Web Part的完整的、可個性化設(shè)置的Web應(yīng)用程序是較復(fù)雜的應(yīng)用。以后的文章中,我們還會深入探討Web Part控件在用戶控件或自定義控件開發(fā)中的應(yīng)用。