ASP.NET 2.0 Web Part编程入门(实践篇)

来源:百度文库 编辑:神马文学网 时间:2024/04/28 00:40:25
2007-1-23 11:13:48   Count:
 微软MCSE2003:Security 微软MCSE2003+MCDBA
 Cisco网络工程师CCNA 华为认证网络工程师(HCNE)
 CorelDRAW 12 官方认证 Adobe平面设计师(ACCD)
 AutoCAD(2006)认证专家 Adobe网络设计师(ACCD)
 软件加密与解密工程师培训 网络应用工程师
 国家信息化网络安全工程师 CEAC网络应用工程师
一、简介
在许多Web应用程序中,能够更改内容的外观以及允许用户选择和排列要显示的内容是非常有用的。ASP.NET Web Part功能由一组用于创建网页的控件组成,这些控件能显示模块化内容并允许用户更改外观和内容。
在本示例中,我将创建一个使用Web Part控件集的页面,用于创建用户可以修改或进行个性化设置的网页。本示例具体实现如下任务:
◆向页添加Web Part控件。
◆创建一个自定义用户控件,并将其用作Web Part控件。
◆允许用户对页面上的Web Part控件的布局进行个性化设置。
◆允许用户编辑Web Part控件的外观。
◆允许用户从可用Web Part控件的目录中进行选择。
(一)先决条件
若要完成本示例,您需要:
◆可标识各个用户的站点。如果您有一个已配置了ASP.NET成员资格的站点,则可以使用该站点作为本示例的起点。
◆配置过的个性化设置提供程序和数据库。Web Part个性化设置默认情况下是启用的,它使用SQL个性化设置提供程序(SqlPersonalizationProvider)以及Microsoft SQL Server Exprss Edition(SSE)存储个性化设置数据。此示例使用SSE和默认的SQL提供程序。如果安装了SSE,则不需要进行任何配置。SSE在安装Microsoft Visual Studio 2005时作为可选部分免费提供,也可以从Microsoft.com免费下载。若要使用SQL Server的某个完整版本,必须安装和配置ASP.NET应用程序服务数据库,并配置SQL个性化设置提供程序以连接到该数据库。当然,你也可以创建和配置自定义提供程序,以便使用其他非SQL数据库或存储解决方案。
【注】本文程序调试环境为Windows XP Professional+VS2005。
二、案例分析
现在,我们开始创建一个使用Web Part控件显示静态内容的页面。使用Web Part的第一步是创建具有两个必需的结构元素的页面。首先,Web Part页需要一个WebPartManager控件来跟踪和协调所有Web Part控件;其次,Web Part页需要一个或多个区域(区域即“Zone”,是包含WebPart或其他服务器控件并且占据页面上指定区域的复合控件)。
【注意】您无需执行任何操作即可启用Web Part个性化设置;Web Part控件集默认情况下即启用该设置。在站点上第一次运行Web Part页时,ASP.NET会设置默认的个性化设置提供程序来存储用户个性化设置。
(一)创建包含Web Part控件的页面
1.启动VS2005,创建一个ASP.NET网站WebPartsDemo,并将默认页面Default.aspx重命名为WebPartsDemo.aspx。
2.切换到“设计”视图。
3.确保在“视图”菜单中选中“非可视控件”和“详细信息”选项,以便查看不具有用户界面的布局标记和控件。
4.在设计图面上将插入点放在标记前,然后按Enter添加一个新行。将插入点放在新行字符前,单击菜单上的“块格式”下拉列表控件,再选择选项“标题1”。在该标题中添加文本“Web Part应用演示”。
5.从工具箱的“WebParts”选项卡中,将一个WebPartManager控件拖动到页上,并将它放置在新行字符之后,标记之前。
【注】WebPartManager控件不呈现任何输出,因此在设计器图面上显示为灰框。
6.将插入点放置在标记内。
7.在“布局”菜单中单击“插入表”,然后创建一个包含一行三列的表。单击“单元格属性”按钮,从“垂直对齐”下拉列表中选择“顶端对齐”,单击“确定”创建表格。
8.将一个WebPartZone控件拖动到该表左边的列中,并设置下面相应的属性:
◆ID—SidebarZone;
◆HeaderText—“侧栏”;
9.再次将一个WebPartZone控件拖动到该表中间的列中,并设置下面的属性:
◆ID—MainZone;
◆HeaderText—“主要”;
10.保存文件。
现在,页面中具有两个能够单独控制的不同区域。但是,这两个区域中都没有任何内容,因此下一步就是创建内容。此示例中使用的是仅显示静态内容的Web Part控件。
Web Part区域的布局由元素指定。在区域模板内可以添加任何ASP.NET控件,无论是自定义Web Part控件、用户控件还是现有服务器控件。注意,本例中使用的是Label控件,其中仅添加了静态内容。如果在WebPartZone区域中放置常规服务器控件,则在运行时,ASP.NET将该控件视为Web Part控件,并在控件上启用Web Part功能。
(二)为主要区域创建内容
1.从工具箱的“标准”选项卡中将一个Label控件拖动到ID属性设置为MainZone的区域的内容区域中。
2.切换到“源”视图。注意,系统自动添加了一个元素来包装MainZone中的Label控件。
3.为元素添加一个名为title的属性,并将属性值设置为“Content”,并从元素中移除Text="Label"属性。然后,在元素的开始标记和结束标记之间添加一些文本,例如在一对元素标记之间添加文本“欢迎访问本主页”。代码如下所示。



欢迎访问本主页





4.保存文件。
接下来,创建一个也可以作为Web Part控件添加到页面中的用户控件。
(三)创建用户控件
本例中,我将一个新的Web用户控件添加到站点中,充当搜索控件。将该控件放在WebPartsDemo.aspx页所在的目录中,并将其命名为SearchUserControl.ascx。
【注意】此示例的用户控件并不实现实际的搜索功能;它仅用于演示Web部件功能。
1.切换到“设计”视图。从工具箱的“标准”选项卡中,将TextBox控件拖动到页面上。
2.将插入点放在刚添加的文本框之后,再按Enter添加一个新行。
3.将Button控件拖动到页面上刚添加的文本框下面的新行上。
4.切换到“源”视图,并确保用户控件的源代码如下所示:
<%@ control language="C#" classname="SearchUserControl" %>




5.保存并关闭文件。
接下来,我们将向侧栏区域添加Web Part控件—将向侧栏区域添加两个控件:一个包含链接列表,另一个则是在前面创建的用户控件。链接是作为标准Label服务器控件添加的,添加方法类似于为主要区域创建静态文本。虽然用户控件中包含的各个服务器控件都可直接包含在该区域中(类似标签控件),但在本示例中不是这样。相反,它们是在前面的过程中创建的用户控件的一部分。这演示了将所需控件和其他功能打包到用户控件中,然后在某个区域中将该控件作为Web Part控件引用的常用方式。
运行时,Web Part控件集将这两个控件都包装在GenericWebPart控件中。当GenericWebPart控件包装Web服务器控件时,GenericWebPart为父控件,您可以通过该父控件的ChildControl属性访问服务器控件。
【注意】GenericWebPart控件能够使标准Web服务器控件具有与从WebPart类派生的Web Part控件相同的基本行为和属性。
(四)向侧栏区域添加Web Part控件
1.打开WebPartsDemo.aspx页。
2.切换到“设计”视图。
3.将已创建的用户控件页SearchUserControl.ascx从“解决方案资源管理器”拖放到ID属性设置为SidebarZone的区域中。
4.保存WebPartsDemo.aspx页面。
5.切换到“源”视图。
6.在SidebarZone的元素内,对用户控件的引用之上,添加一个包含了链接的元素;另外,将Title属性添加到用户控件标记,属性值为“搜索”,如下所示:
headertext="侧栏">


asp.net/‘>http://www.asp.net">ASP.NET网站


GotDotNet


Contoso.com



title="搜索" />


(五)测试页面

图1.具有两个区域的Web Part演示页
(六)支持用户更改布局和编辑页面
元素和两个编辑控件。
1.创建支持对页面布局进行更改的用户控件
(1)在Visual Studio中,选择“文件→新建”菜单,然后单击“文件”选项。
(2)在“添加新项”对话框中,选择“Web用户控件”。将新文件命名为DisplayModeMenu.ascx,并取消选项“将源代码放在单独的文件中”。
(3)单击“添加”新建控件。
(4)切换到“源”视图。
(5)按如下内容修改源码(此用户控件允许用户更改其视图和显示模式的Web Part控件集功能,并允许您在某种显示模式下更改页面的物理外观和布局):
2.允许用户更改布局



runat="server" />




3.测试布局更改

图2.包含“链接”控件的Web Part演示页

图3.编辑模式下的Web Part演示页

图4.编辑过的Web Part演示页
(七)在运行时添加Web Part
1.允许用户在运行时添加Web Part
元素的源代码。注意,DeclarativeCatalogPart控件中包含了一个元素以及两个可从目录添加到页面中的服务器控件。
【提示】显然,在DeclarativeCatalogPart控件的“WebPartsTemplate”部分中也可以加入你的自定义Web控件或用户控件—如果你愿意的话。
(8)为添加到目录中的每个控件添加Title属性。
【问题】这是否又是微软的一个小纰漏?开始加入控件时,只显示Caption属性,但是在目录区域中显示单选框时,则只能使用Title属性,因此这里只得手工添加,而且可以去掉原有的Caption属性,见下面的代码。另外,虽然Title并非在设计时通常可在这两个服务器控件上设置的属性,但当用户在运行时刻将这些控件从目录添加到WebPartZone区域时,这些控件均包装在GenericWebPart控件中。这使它们可以“充当”Web Part控件,而且它们可以显示此标题。
2.测试Web Part目录

图5.从目录区域添加到主要区域的控件(充当Web Part)
三、小结