使用Web部件应用程序中的用户控件时,可以在运行时利用WebPart控件的所有功能。有关详细信息,请参见在Web部件应用程序中使用ASP.NET服务器控件。用户控件还保留了作为服务器控件的正常功能,但有一个例外:在Web部件应用程序中使用的用户控件上禁用输出缓存。对于每个页请求,Web部件控件集都要求将所有控件添加到控件树。要使个性化设置功能能够正常工作,且个性化设置数据可以往返回到控件,这是必需的。但是,如果在用户控件上启用了输出缓存,控件将不会添加到控件树,这就会与Web部件功能发生冲突。这就是通过设计在Web部件应用程序中的用户控件上禁用输出缓存的原因。创建Web部件页以承载用户控件创建一个新的ASP.NET页。在页顶部添加下面的页声明。VBC#在刚才添加的页声明下面,添加以下具有HTML标记的基本页结构。WebPartsDemoPageWebPartsUserControlDemonstration将该页保存到启用了个性化设置的站点下的目录中。向页添加Web部件控件在页的元素紧下面,添加一个WebPartManager控件。在元素的紧下面、表的第一组标记(第一个表列)中间,添加一个WebPartZone控件,以包含您将在后面的步骤中添加的用户控件。在您刚才添加的区域的元素中,添加一个现有的服务器控件以及一些静态内容,在运行时会将它们视为另一个Web部件控件(因为它在Web部件区域中):ASP.NETsiteGotDotNetContoso.com在表的第二组标记(第二个表列)中,添加另一个WebPartZone控件,以包含您将在后面的步骤中添加的用户控件。在表的第三个元素(第三列)中,添加一个元素。添加一个元素,然后添加一个和一个元素。编辑器区域中的代码应类似于下面这样:保存页。创建用户控件在文本编辑器中创建一个新文件。此文件将包含也可以作为Web部件控件添加到页面的用户控件。注意本演练的搜索控件并不实现实际的搜索功能;它只用于演示Web部件功能。在新文件的顶部,如下例中所示添加控件声明。VBC#在控件声明的下面,添加一对C#在元素的下面添加一个文本框和一个按钮,以便为搜索控件提供基本的用户界面,如下面的代码示例所示。将文件命名为SearchUserControlVB.ascx或SearchUserControlCS.ascx(具体取决于您使用的语言),并将其保存到WebPartsDemo.aspx页所在的目录中。安全注意该控件具有一个文本框,用于接受用户输入,这是一个潜在的安全威胁。网页中的用户输入可能会包含具有恶意的客户端脚本。默认情况下,ASP.NET网页验证用户输入,以确保输入中不包含HTML元素或脚本。只要启用了此验证,就不需要显式检查用户输入中的脚本或HTML元素。有关信息,请参见脚本侵入概述。在主Web部件区域中引用用户控件在网页的顶部,将下面的声明添加到页声明的后面,以引用刚刚创建的用户控件。如果您使用的不是本主题中提供的用户控件示例,则需要将src属性设置为您所使用的用户控件的路径和文件名,您还可以选择为tagname属性赋一个不同的值。[VB][C#]在主区域的元素中,引用您在前面创建的用户控件。保存和关闭该页。