现在,您就可以将 Web 部件(Components)控件(Controls)添加到 Sidebar 区域。您将添加两个控件(Controls)到 Sidebar 区域,其中一个包含链接列表,而另一个则是在前面的过程中创建的用户(Users)控件(Controls)。这些链接将作为单个标准的 Label 服务器控件(Controls)进行添加,其方式类似于为 Main 区域创建静态文本。不过,虽然用户(Users)控件(Controls)中包含的单个服务器控件(Controls)可以直接包含在区域中,但在这种情况下却不能包含在区域中。相反,它们是在前面的过程中创建的用户(Users)控件(Controls)的一部分。这阐释了一种常见方法,使用这种方法可以将需要的任何控件(Controls)和额外功能打包在用户(Users)控件(Controls)中,然后在区域中将该用户(Users)控件(Controls)作为 Web 部件(Components)控件(Controls)引用。
在运行时,Web 部件(Components)控件(Controls)集将使用 GenericWebPart 控件(Controls)同时包装这两个控件(Controls)。当 GenericWebPart 控件(Controls)包装 Web 服务器控件(Controls)时,泛型部件(Components)控件(Controls)为父控件(Controls),而且您可以通过父控件(Controls)的 ChildControl 属性访问服务器控件(Controls)。泛型部件(Components)控件(Controls)的这种用途使得标准 Web 服务器控件(Controls)可以与从 WebPart 类派生的 Web 部件(Components)控件(Controls)拥有相同的基本行为和属性。
为侧栏区域创建内容
1. 在文本编辑器中打开 WebPartsDemo.aspx 页。
2. 在页面的顶部,将下面的声明添加到页声明的紧后面,以引用刚刚创建的用户(Users)控件(Controls)。
Visual Basic 复制代码
<%@ register tagprefix="uc1" tagname="SearchUserControl"
src="searchusercontrolvb.ascx" %>
C# 复制代码
<%@ register tagprefix="uc1" tagname="SearchUserControl"
src="searchusercontrolcs.ascx" %>
3. 在 Sidebar 区域的 <zonetemplate> 元素中,添加包含若干链接的 Label 控件(Controls)。在该控件(Controls)的下面,引用之前创建的用户(Users)控件(Controls),如下面的代码示例所示。
复制代码
<asp:webPartZone id="SidebarZone" runat="server"
headertext="Sidebar">
<zonetemplate>
<asp:label runat="server" id="linksPart" title="Links">
<a href="www.asp.net">ASP.NET site</a>
<br />
<a href="www.gotdotnet.com">GotDotNet</a>
<br />
<a href="www.contoso.com">Contoso.com</a>
<br />
</asp:label>
<uc1:SearchUserControl id="searchPart" runat="server"
title="Search" />
</zonetemplate>
</asp:WebPartZone>
4. 保存 WebPartsDemo.aspx 文件。
现在可以对页进行测试。
对页进行测试
1. 在浏览器中加载页。
该页显示两个区域。此时,在页上每个控件(Controls)的标题栏中都将显示一个向下箭头,其中包含一个称为谓词菜单的下拉菜单。谓词是用户(Users)可以对服务器控件(Controls)执行的操作,如关闭、最小化或编辑控件(Controls)。谓词菜单中的每个菜单项都是一个谓词。下面的屏幕快照显示的是此页。
WebPartsDemo 页