通过页面中的声明,开发者可以为 Web 部件在两个服务器控件之间静态连接。与被声明的控件一样,静态连接会在 Web 页面中变成一个永久的对象。所有用户都可以看到静态的连接(因为它是已共享的对象),尽管可以提供用户界面(UI)选项来断开它与连接对象之间的联系,但它们不能够用来删除连接对象,当你需要一个连接始终为所有用户可用、并且不想要用户在页面中删除它的时候,选择静态连接是一个好主意。关于连接的详细内容,请参考“WebPartConnection
和 Web 部件连接概览”。关于静态连接的详细内容,请参考“IsStatic
属性”。该文章演示了如何在两个 WebPart
控件之间创建静态连接。
提示:该文章的关注点是如何在 Web 页面的标记中声明静态连接。要声明两个服务器控件之间的静态 Web 部件的连接,这些控件必须完全被设计成对连接进行处理,并且它们必须位于一个 WebPartZoneBase
区域中。关于参与连接的控件需求的完整描述,请参考“WebPartConnection
类”。要获得两个 WebPart
控件以及用于托管静态连接的 Web 页面(在该文章中演示)的实例代码,请参考 IsStatic
属性的“实例”部分。
如何在区域中声明服务器控件
-
在将要包含连接的 Web 页面的
<body>
部分添加一个<WebPartZone>
元素,并添加一个子<ZoneTemplate>
元素来包含你添加在区域中的服务器控件。代码看起来应该像下列实例。<asp:WebPartZone ID="WebPartZone1" runat="server"> <ZoneTemplate> </ZoneTemplate> </asp:WebPartZone>
-
在
<ZoneTemplate>
元素标记之间,声明将会在 Web 部件的连接中扮演提供者和消费者控件的服务器控件。这些控件必须已经被设计成连接的参与者。你也可以在这个区域中添加其他的服务器控件。与此文章前面提示的一样,该实例中被声明的控件从实例代码中获得IsStatic
属性。拥有服务器控件的全部区域的代码看起来如下。<asp:WebPartZone ID="WebPartZone1" runat="server"> <ZoneTemplate> <aspSample:ZipCodeWebPart ID="zip1" runat="server" Title="ZIP Code Provider" /> <aspSample:WeatherWebPart ID="weather1" runat="server" Title="ZIP Code Consumer" /> </ZoneTemplate> </asp:WebPartZone>
如何声明静态连接
-
现在你的 Web 页面应该已经有一个
<Asp:WebPartManager>
元素,它是页面使用 Web 部件控件时所必需的。为<Asp:WebPartManager>
元素添加一个子元素<StaticConnections>
来包含一个或多个已声明的静态连接。代码看起来应该像下列实例。<asp:WebPartManager ID="mgr" runat="server" > <StaticConnections> </StaticConnections> </asp:WebPartManager>
-
在
<StaticConnection>
元素中,声明一个<Asp:WebPartConnection>
元素。除了
id
和runat
参数之外,你还必须为这个连接指定的下列所必需的参数:-
ConsumerID
- 指出连接中的消费者控件的 ID。 -
ConsumerConnectionPointID
- 指出在消费者中被用来建立连接的特定回调方法的 ID。这个参数只有在消费者拥有多个连接点的时候才是必需的。关于连接点的详细内容,请参考“ConnectionPoint
类”。 -
ProviderID
- 指出连接中的提供者控件的 ID。 -
ProviderConnectionPointID
- 指出在提供者中被用来建立连接的特定回调方法的 ID。这个参数只有在提供者拥有多个连接点的时候才是必需的。
<Asp:WebPartManager>
元素以及子静态连接的完整代码看起来应该像下列实例。<asp:WebPartManager ID="mgr" runat="server" > <StaticConnections> <asp:WebPartConnection ID="conn1" ConsumerConnectionPointID="ZipCodeConsumer" ConsumerID="weather1" ProviderConnectionPointID="ZipCodeProvider" ProviderID="zip1" /> </StaticConnections> </asp:WebPartManager>
-