ProxyWebPartManager Classe
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Permet aux développeurs de déclarer des connexions statiques dans une page de contenu lorsqu’un WebPartManager contrôle a été déclaré dans la page maître associée à la page de contenu.
public ref class ProxyWebPartManager : System::Web::UI::Control
[System.ComponentModel.Bindable(false)]
public class ProxyWebPartManager : System.Web.UI.Control
[<System.ComponentModel.Bindable(false)>]
type ProxyWebPartManager = class
inherit Control
Public Class ProxyWebPartManager
Inherits Control
- Héritage
- Attributs
Exemples
L’exemple de code suivant montre comment utiliser la ProxyWebPartManager classe pour déclarer des connexions statiques sur des pages de contenu dans une application qui utilise des pages maîtres. L’exemple comporte cinq parties :
Contrôle utilisateur qui vous permet de modifier le mode d’affichage des composants WebPart sur une page.
Code source pour une interface et deux WebPart contrôles agissant en tant que fournisseur et consommateur pour une connexion.
Page web maître qui héberge le contrôle utilisateur, les pages de contenu et le WebPartManager contrôle de l’application.
Page web de contenu qui héberge un ProxyWebPartManager contrôle, les deux contrôles personnalisés WebPart et une connexion statique pour connecter les deux contrôles.
Explication de l’exécution de l’exemple de page.
La première partie de cet exemple de code est le contrôle utilisateur qui permet aux utilisateurs de modifier les modes d’affichage sur une page Web. Enregistrez le code source suivant dans un fichier .ascx, en lui donnant le nom de fichier affecté à l’attribut Src de la Register directive pour ce contrôle utilisateur, qui se trouve en haut de la page maître d’hébergement. Pour plus d’informations sur les modes d’affichage et une description du code source dans ce contrôle, consultez Procédure pas à pas : modification des modes d’affichage sur une page de composants WebPart.
<%@ control language="C#" classname="DisplayModeMenuCS"%>
<script runat="server">
// Use a field to reference the current 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;
// Fill the dropdown with the names of supported display modes.
foreach (WebPartDisplayMode mode in _manager.SupportedDisplayModes)
{
String modeName = mode.Name;
// Make sure a mode is enabled before adding it.
if (mode.IsEnabled(_manager))
{
ListItem item = new ListItem(modeName, modeName);
DisplayModeDropdown.Items.Add(item);
}
}
// If shared scope is allowed for this user, display the scope-switching
// UI and select the appropriate radio button for the current user scope.
if (_manager.Personalization.CanEnterSharedScope)
{
Panel2.Visible = true;
if (_manager.Personalization.Scope == PersonalizationScope.User)
RadioButton1.Checked = true;
else
RadioButton2.Checked = true;
}
}
// Change the page to the selected display mode.
void DisplayModeDropdown_SelectedIndexChanged(object sender, EventArgs e)
{
String selectedMode = DisplayModeDropdown.SelectedValue;
WebPartDisplayMode mode = _manager.SupportedDisplayModes[selectedMode];
if (mode != null)
_manager.DisplayMode = mode;
}
// Set the selected item equal to the current display mode.
void Page_PreRender(object sender, EventArgs e)
{
ListItemCollection items = DisplayModeDropdown.Items;
int selectedIndex =
items.IndexOf(items.FindByText(_manager.DisplayMode.Name));
DisplayModeDropdown.SelectedIndex = selectedIndex;
}
// Reset all of a user's personalization data for the page.
protected void LinkButton1_Click(object sender, EventArgs e)
{
_manager.Personalization.ResetPersonalizationState();
}
// If not in User personalization scope, toggle into it.
protected void RadioButton1_CheckedChanged(object sender, EventArgs e)
{
if (_manager.Personalization.Scope == PersonalizationScope.Shared)
_manager.Personalization.ToggleScope();
}
// If not in Shared scope, and if user is allowed, toggle the scope.
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=" Display Mode"
Font-Bold="true"
Font-Size="8"
Width="120"
AssociatedControlID="DisplayModeDropdown"/>
<asp:DropDownList ID="DisplayModeDropdown" runat="server"
AutoPostBack="true"
Width="120"
OnSelectedIndexChanged="DisplayModeDropdown_SelectedIndexChanged" />
<asp:LinkButton ID="LinkButton1" runat="server"
Text="Reset User State"
ToolTip="Reset the current user's personalization data for the page."
Font-Size="8"
OnClick="LinkButton1_Click" />
<asp:Panel ID="Panel2" runat="server"
GroupingText="Personalization Scope"
Font-Bold="true"
Font-Size="8"
Visible="false" >
<asp:RadioButton ID="RadioButton1" runat="server"
Text="User"
AutoPostBack="true"
GroupName="Scope" OnCheckedChanged="RadioButton1_CheckedChanged" />
<asp:RadioButton ID="RadioButton2" runat="server"
Text="Shared"
AutoPostBack="true"
GroupName="Scope"
OnCheckedChanged="RadioButton2_CheckedChanged" />
</asp:Panel>
</asp:Panel>
</div>
<%@ control language="vb" classname="DisplayModeMenuVB"%>
<script runat="server">
' Use a field to reference the current WebPartManager.
Dim _manager As WebPartManager
Sub Page_Init(ByVal sender As Object, ByVal e As EventArgs)
AddHandler Page.InitComplete, AddressOf InitComplete
End Sub
Sub InitComplete(ByVal sender As Object, ByVal e As System.EventArgs)
_manager = WebPartManager.GetCurrentWebPartManager(Page)
Dim browseModeName As String = WebPartManager.BrowseDisplayMode.Name
' Fill the dropdown with the names of supported display modes.
Dim mode As WebPartDisplayMode
For Each mode In _manager.SupportedDisplayModes
Dim modeName As String = mode.Name
' Make sure a mode is enabled before adding it.
If mode.IsEnabled(_manager) Then
Dim item As New ListItem(modeName, modeName)
DisplayModeDropdown.Items.Add(item)
End If
Next mode
' If shared scope is allowed for this user, display the scope-switching
' UI and select the appropriate radio button for the current user scope.
If _manager.Personalization.CanEnterSharedScope Then
Panel2.Visible = True
If _manager.Personalization.Scope = PersonalizationScope.User Then
RadioButton1.Checked = True
Else
RadioButton2.Checked = True
End If
End If
End Sub
' Change the page to the selected display mode.
Sub DisplayModeDropdown_SelectedIndexChanged(ByVal sender As Object, _
ByVal e As EventArgs)
Dim selectedMode As String = DisplayModeDropdown.SelectedValue
Dim mode As WebPartDisplayMode = _
_manager.SupportedDisplayModes(selectedMode)
If Not (mode Is Nothing) Then
_manager.DisplayMode = mode
End If
End Sub
' Set the selected item equal to the current display mode.
Sub Page_PreRender(ByVal sender As Object, ByVal e As EventArgs)
Dim items As ListItemCollection = DisplayModeDropdown.Items
Dim selectedIndex As Integer = _
items.IndexOf(items.FindByText(_manager.DisplayMode.Name))
DisplayModeDropdown.SelectedIndex = selectedIndex
End Sub
' Reset all of a user's personalization data for the page.
Protected Sub LinkButton1_Click(ByVal sender As Object, _
ByVal e As EventArgs)
_manager.Personalization.ResetPersonalizationState()
End Sub
' If not in User personalization scope, toggle into it.
Protected Sub RadioButton1_CheckedChanged(ByVal sender As Object, _
ByVal e As EventArgs)
If _manager.Personalization.Scope = PersonalizationScope.Shared Then
_manager.Personalization.ToggleScope()
End If
End Sub
' If not in Shared scope, and if user is allowed, toggle the scope.
Protected Sub RadioButton2_CheckedChanged(ByVal sender As Object, _
ByVal e As EventArgs)
If _manager.Personalization.CanEnterSharedScope AndAlso _
_manager.Personalization.Scope = PersonalizationScope.User Then
_manager.Personalization.ToggleScope()
End If
End Sub
</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=" Display Mode"
Font-Bold="true"
Font-Size="8"
Width="120"
AssociatedControlID="DisplayModeDropdown"/>
<asp:DropDownList ID="DisplayModeDropdown" runat="server"
AutoPostBack="true"
Width="120"
OnSelectedIndexChanged="DisplayModeDropdown_SelectedIndexChanged" />
<asp:LinkButton ID="LinkButton1" runat="server"
Text="Reset User State"
ToolTip="Reset the current user's personalization data for the page."
Font-Size="8"
OnClick="LinkButton1_Click" />
<asp:Panel ID="Panel2" runat="server"
GroupingText="Personalization Scope"
Font-Bold="true"
Font-Size="8"
Visible="false" >
<asp:RadioButton ID="RadioButton1" runat="server"
Text="User"
AutoPostBack="true"
GroupName="Scope" OnCheckedChanged="RadioButton1_CheckedChanged" />
<asp:RadioButton ID="RadioButton2" runat="server"
Text="Shared"
AutoPostBack="true"
GroupName="Scope"
OnCheckedChanged="RadioButton2_CheckedChanged" />
</asp:Panel>
</asp:Panel>
</div>
La deuxième partie de l’exemple de code est le code source de l’interface et des contrôles. Le fichier source contient une interface simple nommée IZipCode. Il existe également une WebPart classe nommée ZipCodeWebPart qui implémente l’interface et agit comme contrôle du fournisseur. Sa ProvideIZipCode méthode est la méthode de rappel qui implémente le seul membre de l’interface. La méthode retourne simplement une instance de l’interface. Notez que la méthode est marquée avec un ConnectionProvider attribut dans ses métadonnées. Il s’agit du mécanisme permettant d’identifier la méthode comme méthode de rappel pour le point de connexion du fournisseur. L’autre WebPart classe est nommée WeatherWebPartet agit comme consommateur pour la connexion. Cette classe a une méthode nommée GetZipCode qui obtient une instance de l’interface IZipCode à partir du contrôle fournisseur. Notez que cette méthode est marquée comme méthode de point de connexion du consommateur avec un ConnectionConsumer attribut dans ses métadonnées.
Pour que l’exemple de code s’exécute, vous devez compiler ce code source. Vous pouvez le compiler explicitement et placer l’assembly résultant dans le dossier Bin de votre site web ou dans le Global Assembly Cache. Vous pouvez également placer le code source dans le dossier App_Code de votre site, où il sera compilé dynamiquement au moment de l’exécution. Cet exemple de code utilise la compilation dynamique. Pour obtenir une procédure pas à pas qui montre comment compiler, consultez Procédure pas à pas : développement et utilisation d’un contrôle de serveur web personnalisé.
namespace Samples.AspNet.CS.Controls
{
using System;
using System.Web;
using System.Web.Security;
using System.Security.Permissions;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
[AspNetHostingPermission(SecurityAction.Demand,
Level = AspNetHostingPermissionLevel.Minimal)]
[AspNetHostingPermission(SecurityAction.InheritanceDemand,
Level = AspNetHostingPermissionLevel.Minimal)]
public interface IZipCode
{
string ZipCode { get; set;}
}
[AspNetHostingPermission(SecurityAction.Demand,
Level = AspNetHostingPermissionLevel.Minimal)]
[AspNetHostingPermission(SecurityAction.InheritanceDemand,
Level = AspNetHostingPermissionLevel.Minimal)]
public class ZipCodeWebPart : WebPart, IZipCode
{
string zipCodeText = String.Empty;
TextBox input;
Button send;
public ZipCodeWebPart()
{
}
// Make the implemented property personalizable to save
// the Zip Code between browser sessions.
[Personalizable()]
public virtual string ZipCode
{
get { return zipCodeText; }
set { zipCodeText = value; }
}
// This is the callback method that returns the provider.
[ConnectionProvider("Zip Code Provider", "ZipCodeProvider")]
public IZipCode ProvideIZipCode()
{
return this;
}
protected override void CreateChildControls()
{
Controls.Clear();
input = new TextBox();
this.Controls.Add(input);
send = new Button();
send.Text = "Enter 5-digit Zip Code";
send.Click += new EventHandler(this.submit_Click);
this.Controls.Add(send);
}
private void submit_Click(object sender, EventArgs e)
{
if (!string.IsNullOrEmpty(input.Text))
{
zipCodeText = Page.Server.HtmlEncode(input.Text);
input.Text = String.Empty;
}
}
}
[AspNetHostingPermission(SecurityAction.Demand,
Level = AspNetHostingPermissionLevel.Minimal)]
[AspNetHostingPermission(SecurityAction.InheritanceDemand,
Level = AspNetHostingPermissionLevel.Minimal)]
public class WeatherWebPart : WebPart
{
private IZipCode _provider;
string _zipSearch;
Label DisplayContent;
// This method is identified by the ConnectionConsumer
// attribute, and is the mechanism for connecting with
// the provider.
[ConnectionConsumer("Zip Code Consumer", "ZipCodeConsumer")]
public void GetIZipCode(IZipCode Provider)
{
_provider = Provider;
}
protected override void OnPreRender(EventArgs e)
{
EnsureChildControls();
if (this._provider != null)
{
_zipSearch = _provider.ZipCode.Trim();
DisplayContent.Text = "My Zip Code is: " + _zipSearch;
}
}
protected override void CreateChildControls()
{
Controls.Clear();
DisplayContent = new Label();
this.Controls.Add(DisplayContent);
}
}
}
Imports System.Web
Imports System.Web.Security
Imports System.Security.Permissions
Imports System.Web.UI
Imports System.Web.UI.WebControls
Imports System.Web.UI.WebControls.WebParts
Namespace Samples.AspNet.VB.Controls
<AspNetHostingPermission(SecurityAction.Demand, _
Level:=AspNetHostingPermissionLevel.Minimal)> _
<AspNetHostingPermission(SecurityAction.InheritanceDemand, _
Level:=AspNetHostingPermissionLevel.Minimal)> _
Public Interface IZipCode
Property ZipCode() As String
End Interface
<AspNetHostingPermission(SecurityAction.Demand, _
Level:=AspNetHostingPermissionLevel.Minimal)> _
<AspNetHostingPermission(SecurityAction.InheritanceDemand, _
Level:=AspNetHostingPermissionLevel.Minimal)> _
Public Class ZipCodeWebPart
Inherits WebPart
Implements IZipCode
Private zipCodeText As String = String.Empty
Private input As TextBox
Private send As Button
Public Sub New()
End Sub
' Make the implemented property personalizable to save
' the Zip Code between browser sessions.
<Personalizable()> _
Public Property ZipCode() As String _
Implements IZipCode.ZipCode
Get
Return zipCodeText
End Get
Set(ByVal value As String)
zipCodeText = value
End Set
End Property
' This is the callback method that returns the provider.
<ConnectionProvider("Zip Code Provider", "ZipCodeProvider")> _
Public Function ProvideIZipCode() As IZipCode
Return Me
End Function
Protected Overrides Sub CreateChildControls()
Controls.Clear()
input = New TextBox()
Me.Controls.Add(input)
send = New Button()
send.Text = "Enter 5-digit Zip Code"
AddHandler send.Click, AddressOf Me.submit_Click
Me.Controls.Add(send)
End Sub
Private Sub submit_Click(ByVal sender As Object, _
ByVal e As EventArgs)
If input.Text <> String.Empty Then
zipCodeText = Page.Server.HtmlEncode(input.Text)
input.Text = String.Empty
End If
End Sub
End Class
<AspNetHostingPermission(SecurityAction.Demand, _
Level:=AspNetHostingPermissionLevel.Minimal)> _
<AspNetHostingPermission(SecurityAction.InheritanceDemand, _
Level:=AspNetHostingPermissionLevel.Minimal)> _
Public Class WeatherWebPart
Inherits WebPart
Private _provider As IZipCode
Private _zipSearch As String
Private DisplayContent As Label
' This method is identified by the ConnectionConsumer
' attribute, and is the mechanism for connecting with
' the provider.
<ConnectionConsumer("Zip Code Consumer", "ZipCodeConsumer")> _
Public Sub GetIZipCode(ByVal Provider As IZipCode)
_provider = Provider
End Sub
Protected Overrides Sub OnPreRender(ByVal e As EventArgs)
EnsureChildControls()
If Not (Me._provider Is Nothing) Then
_zipSearch = _provider.ZipCode.Trim()
DisplayContent.Text = "My Zip Code is: " + _zipSearch
End If
End Sub
Protected Overrides Sub CreateChildControls()
Controls.Clear()
DisplayContent = New Label()
Me.Controls.Add(DisplayContent)
End Sub
End Class
End Namespace
La troisième partie de l’exemple de code est la page maître. Vous devez prendre le code source suivant et l’enregistrer dans un fichier, en l’renommant MasterPageCS.master ou MasterPageVB.master (selon la langue que vous utilisez). Notez que la page maître contient une Register directive permettant d’inscrire le contrôle utilisateur et qu’elle fait référence au contrôle utilisateur lui-même dans le corps de la page. La page maître déclare également l’élément unique <asp:webpartmanager> utilisé pour cette page et toutes les pages de contenu associées. Enfin, la page maître a un <asp: contentplaceholder> élément qui déclare le point dans la page où la page de contenu est insérée.
<%@ Master Language="C#" %>
<%@ register tagprefix="uc1"
tagname="DisplayModeMenuCS"
src="~/displaymodemenucs.ascx" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Master page with connections in content pages</title>
</head>
<body>
<h2>Contoso, Ltd.</h2>
<hr />
<form id="form1" runat="server">
<asp:webpartmanager runat="server" id="WebPartManager1" />
<uc1:displaymodemenucs id="menu1" runat="server" />
<div>
<asp:contentplaceholder id="ContentPlaceHolder1"
runat="server" />
</div>
</form>
</body>
</html>
<%@ Master Language="VB" %>
<%@ register tagprefix="uc1"
tagname="DisplayModeMenuVB"
src="~/displaymodemenuvb.ascx" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Master page with connections in content pages</title>
</head>
<body>
<h2>Contoso, Ltd.</h2>
<hr />
<form id="form1" runat="server">
<asp:webpartmanager runat="server" id="WebPartManager1" />
<uc1:displaymodemenuvb id="menu1" runat="server" />
<div>
<asp:contentplaceholder id="ContentPlaceHolder1"
runat="server" />
</div>
</form>
</body>
</html>
La quatrième partie de l’exemple de code est la page de contenu. Vous devez copier le code source suivant et l’enregistrer dans un fichier avec une extension .aspx. Notez que sa Page directive contient un MasterFile attribut pour faire référence à la page maître. De plus, cette page a une Register directive pour inscrire le fichier dans le dossier App_Code qui contient les contrôles personnalisés WebPart compilés dynamiquement qui participent à la connexion. Dans les <asp:content> balises de la page, il existe un <asp:proxywebpartmanager> élément, avec un élément enfant <staticconnections> , qui à son tour a un élément enfant <asp:webpartconnection> pour déclarer les détails de la connexion. Dans les <script> balises de la page, la Button1_Click méthode ajoute du code qui accède au contrôle principal WebPartManager dans la page maître et au ProxyWebPartManager contrôle de la page de contenu, puis écrit certains de leurs détails dans la page.
<%@ Page Language="C#" MasterPageFile="~/MasterPageCS.master"
Title="Connections Page" %>
<%@ Register TagPrefix="aspSample"
Namespace="Samples.AspNet.CS.Controls" %>
<script runat="server">
protected void Button1_Click(object sender, EventArgs e)
{
StringBuilder lblText = new StringBuilder();
if (Page.Master.FindControl("WebPartManager1") != null)
{
WebPartManager theMgr =
(WebPartManager)Page.Master.FindControl("WebPartManager1");
lblText.Append("WebPartManager: <br /><pre>" +
" Master page file is " + Page.MasterPageFile + "<br />" +
" ID is " + theMgr.ID + "<br />" +
" Connection count is " +
theMgr.StaticConnections.Count.ToString() + "<br />" +
" WebParts count is " +
theMgr.WebParts.Count.ToString() + "</pre><br />");
}
if (proxymgr1 != null)
{
lblText.Append("ProxyWebPartManager: <br /><pre>" +
" Content page file is " + Request.Path + "<br />" +
" ID is " + proxymgr1.ID + "<br />" +
" Connection count is " +
proxymgr1.StaticConnections.Count.ToString() +
"</pre><br />");
}
Literal1.Text = lblText.ToString();
}
</script>
<asp:Content ID="Content1" Runat="Server"
ContentPlaceHolderID="ContentPlaceHolder1" >
<asp:proxywebpartmanager id="proxymgr1" runat="server">
<staticconnections>
<asp:webpartconnection id="connection1"
consumerconnectionpointid="ZipCodeConsumer"
consumerid="zipConsumer"
providerconnectionpointid="ZipCodeProvider"
providerid="zipProvider" />
</staticconnections>
</asp:proxywebpartmanager>
<div>
<asp:webpartzone id="zone1" runat="server">
<zonetemplate>
<aspsample:zipcodewebpart id="zipProvider" runat="server"
title="Zip Code Provider" />
<aspsample:weatherwebpart id="zipConsumer" runat="server"
title="Zip Code Consumer" />
</zonetemplate>
</asp:webpartzone>
</div>
<div>
<asp:button id="Button1" runat="server"
text="WebPartManager Information" onclick="Button1_Click" />
<br />
</div>
<asp:connectionszone id="ConnectionsZone1" runat="server" />
<asp:literal id="Literal1" runat="server" />
</asp:Content>
<%@ Page Language="VB" MasterPageFile="~/MasterPageVB.master"
Title="Connections Page" %>
<%@ Register TagPrefix="aspSample"
Namespace="Samples.AspNet.VB.Controls" %>
<script runat="server">
Protected Sub Button1_Click(ByVal sender As Object, _
ByVal e As EventArgs)
Dim lblText As StringBuilder = New StringBuilder()
If Not (Page.Master.FindControl("WebPartManager1") Is Nothing) Then
Dim theMgr As WebPartManager = _
CType(Page.Master.FindControl("WebPartManager1"), WebPartManager)
lblText.Append("WebPartManager: <br /><pre>" & _
" Master page file is " & Page.MasterPageFile & "<br />" & _
" ID is " & theMgr.ID & "<br />" & _
" Connection count is " & _
theMgr.StaticConnections.Count.ToString() & "<br />" & _
" WebParts count is " & _
theMgr.WebParts.Count.ToString() & "</pre><br />")
End If
If Not (proxymgr1 Is Nothing) Then
lblText.Append("ProxyWebPartManager: <br /><pre>" & _
" Content page file is " & Request.Path & "<br />" & _
" ID is " & proxymgr1.ID & "<br />" & _
" Connection count is " & _
proxymgr1.StaticConnections.Count.ToString() & "</pre><br />")
End If
Literal1.Text = lblText.ToString()
End Sub
</script>
<asp:Content ID="Content1" Runat="Server"
ContentPlaceHolderID="ContentPlaceHolder1" >
<asp:proxywebpartmanager id="proxymgr1" runat="server">
<staticconnections>
<asp:webpartconnection id="connection1"
consumerconnectionpointid="ZipCodeConsumer"
consumerid="zipConsumer"
providerconnectionpointid="ZipCodeProvider"
providerid="zipProvider" />
</staticconnections>
</asp:proxywebpartmanager>
<div>
<asp:webpartzone id="zone1" runat="server">
<zonetemplate>
<aspsample:zipcodewebpart id="zipProvider" runat="server"
title="Zip Code Provider" />
<aspsample:weatherwebpart id="zipConsumer" runat="server"
title="Zip Code Consumer" />
</zonetemplate>
</asp:webpartzone>
</div>
<div>
<asp:button id="Button1" runat="server"
text="WebPartManager Information" onclick="Button1_Click" />
<br />
<asp:literal id="Literal1" runat="server" />
</div>
<asp:connectionszone id="ConnectionsZone1" runat="server" />
</asp:Content>
Après avoir chargé la page dans un navigateur, cliquez sur le bouton Informations webPartManager et observez les informations sur le WebPartManager contrôle dans la page maître et le ProxyWebPartManager contrôle dans la page de contenu. Par exemple, notez qu’ils ont tous les deux le même nombre dans leurs propriétés respectives qui effectuent le suivi des connexions statiques (la StaticConnections propriété). Notez également que bien que le WebPartManager contrôle ait une WebParts propriété qui suit le nombre de WebPart contrôles qu’il gère, le ProxyWebPartManager contrôle n’a aucune propriété de ce type, car son seul objectif est de contenir des connexions statiques.
Remarques
Le ProxyWebPartManager contrôle existe pour le scénario particulier de déclaration de connexions statiques dans les pages de contenu lorsqu’un WebPartManager contrôle a déjà été déclaré dans une page maître.
Par conception, une page Web qui utilise des contrôles De composants WebPart doit contenir un (et un seul) WebPartManager contrôle qui gère tous les contrôles De composants WebPart sur la page. Lorsqu’une application De composants WebPart utilise des pages maîtres, il est courant de placer le WebPartManager contrôle dans la page maître, car toutes les pages de contenu sont fusionnées avec la page maître au moment de l’exécution et le contrôle unique WebPartManager gère tous les contrôles de composants WebPart de toutes les pages de contenu. Toutefois, lorsque les développeurs veulent déclarer des connexions statiques dans les pages de contenu d’une telle application, ils peuvent sembler être confrontés à une limitation. Une connexion de composants WebPart statique peut être déclarée uniquement en ajoutant un <asp:webpartconnection> élément en tant qu’enfant d’un <staticconnections> élément, qui doit être lui-même un enfant d’un <asp:webpartmanager> élément. Toutefois, étant donné que le WebPartManager contrôle a déjà été déclaré dans la page maître et qu’il s’agit du contrôle autorisé WebPartManager , les développeurs ne peuvent pas déclarer de contrôles supplémentaires WebPartManager dans les pages de contenu pour ajouter des connexions statiques.
Le ProxyWebPartManager contrôle prend la place du WebPartManager contrôle dans ce scénario. Les développeurs déclarent un <asp:proxywebpartmanager> élément au lieu d’un <asp:webpartmanager> élément dans leurs pages de contenu, puis peuvent déclarer des connexions statiques en tant qu’éléments enfants. Au moment de l’exécution, les connexions dans le ProxyWebPartManager contrôle sont simplement ajoutées à la StaticConnections collection du WebPartManager contrôle et traitées comme n’importe quelle autre connexion.
Étant donné que le ProxyWebPartManager contrôle est utilisé uniquement dans ce scénario de développement particulier, il a des fonctionnalités plus limitées que la WebPartManager classe. En fait, bien que le ProxyWebPartManager contrôle agisse comme un proxy pour contenir des connexions statiques pour le WebPartManager contrôle dans les pages de contenu, il n’hérite pas du WebPartManager contrôle. Il hérite directement de la Control classe et remplace seulement quelques-uns des membres de base. Les EnableThemingpropriétés et SkinID les Visiblepropriétés sont remplacées et affectées qui empêchent leur utilisation. D’autres propriétés héritées sont remplacées pour ajuster leur comportement au moment du design, mais sinon elles ont le même comportement que les propriétés de base. Celles-ci incluent les propriétés et ClientID les Controls propriétés. Enfin, la ProxyWebPartManager classe a une propriété non héritée. La StaticConnections propriété retourne sa propre collection de connexions statiques (un ProxyWebPartConnectionCollection objet).
Quant aux méthodes, la ProxyWebPartManager classe remplace de la même façon quelques méthodes, principalement pour restreindre leur utilisation. La méthode héritée Focus est rendue inutilisable en lève une exception si elle est appelée. La CreateControlCollection méthode retourne toujours une collection de contrôles vide, qui a l’effet de l’empêcher de pouvoir contenir une collection de contrôles. Enfin, la OnInit méthode appelle la méthode de base, puis affecte la collection de connexions référencées par la StaticConnections propriété à la WebPartManager.StaticConnections propriété du WebPartManager contrôle. Cela a pour effet de déployer toutes les connexions statiques déclarées dans toutes les pages de contenu et de les faire partie de la collection de connexions conservée par le WebPartManager contrôle dans la page maître.
Constructeurs
| Nom | Description |
|---|---|
| ProxyWebPartManager() |
Initialise une nouvelle instance de la classe ProxyWebPartManager. |
Propriétés
| Nom | Description |
|---|---|
| Adapter |
Obtient l’adaptateur spécifique au navigateur pour le contrôle. (Hérité de Control) |
| AppRelativeTemplateSourceDirectory |
Obtient ou définit le répertoire virtuel relatif à l’application du ou UserControl de l’objet Page qui contient ce contrôle. (Hérité de Control) |
| BindingContainer |
Obtient le contrôle qui contient la liaison de données de ce contrôle. (Hérité de Control) |
| ChildControlsCreated |
Obtient une valeur qui indique si les contrôles enfants du contrôle serveur ont été créés. (Hérité de Control) |
| ClientID |
Obtient l’ID de contrôle pour le balisage HTML généré par ASP.NET. |
| ClientIDMode |
Obtient ou définit l’algorithme utilisé pour générer la valeur de la ClientID propriété. (Hérité de Control) |
| ClientIDSeparator |
Obtient une valeur de caractère représentant le caractère séparateur utilisé dans la ClientID propriété. (Hérité de Control) |
| Context |
Obtient l’objet HttpContext associé au contrôle serveur pour la requête Web actuelle. (Hérité de Control) |
| Controls |
Obtient un ControlCollection objet qui représente les contrôles enfants d’un contrôle serveur spécifié dans la hiérarchie de l’interface utilisateur. |
| DataItemContainer |
Obtient une référence au conteneur d’affectation de noms si le conteneur d’affectation de IDataItemContainernoms implémente . (Hérité de Control) |
| DataKeysContainer |
Obtient une référence au conteneur d’affectation de noms si le conteneur d’affectation de IDataKeysControlnoms implémente . (Hérité de Control) |
| DesignMode |
Obtient une valeur indiquant si un contrôle est utilisé sur une surface de conception. (Hérité de Control) |
| EnableTheming |
Remplace la propriété de base pour empêcher l’utilisation des thèmes. |
| EnableViewState |
Obtient ou définit une valeur indiquant si le contrôle serveur conserve son état d’affichage et l’état d’affichage des contrôles enfants qu’il contient, au client demandeur. (Hérité de Control) |
| Events |
Obtient une liste de délégués de gestionnaire d’événements pour le contrôle. Cette propriété est en lecture seule. (Hérité de Control) |
| HasChildViewState |
Obtient une valeur indiquant si les contrôles enfants du contrôle serveur actuel ont des paramètres d’état d’affichage enregistrés. (Hérité de Control) |
| ID |
Obtient ou définit l’identificateur programmatique affecté au contrôle serveur. (Hérité de Control) |
| IdSeparator |
Obtient le caractère utilisé pour séparer les identificateurs de contrôle. (Hérité de Control) |
| IsChildControlStateCleared |
Obtient une valeur indiquant si les contrôles contenus dans ce contrôle ont un état de contrôle. (Hérité de Control) |
| IsTrackingViewState |
Obtient une valeur qui indique si le contrôle serveur enregistre les modifications apportées à son état d’affichage. (Hérité de Control) |
| IsViewStateEnabled |
Obtient une valeur indiquant si l’état d’affichage est activé pour ce contrôle. (Hérité de Control) |
| LoadViewStateByID |
Obtient une valeur indiquant si le contrôle participe au chargement de son état d’affichage ID au lieu de l’index. (Hérité de Control) |
| NamingContainer |
Obtient une référence au conteneur d’affectation de noms du contrôle serveur, qui crée un espace de noms unique pour la différenciation entre les contrôles serveur avec la même ID valeur de propriété. (Hérité de Control) |
| Page |
Obtient une référence à l’instance Page qui contient le contrôle serveur. (Hérité de Control) |
| Parent |
Obtient une référence au contrôle parent du contrôle serveur dans la hiérarchie des contrôles de page. (Hérité de Control) |
| RenderingCompatibility |
Obtient une valeur qui spécifie la version ASP.NET avec laquelle le code HTML rendu est compatible. (Hérité de Control) |
| Site |
Obtient des informations sur le conteneur qui héberge le contrôle actuel lors du rendu sur une surface de conception. (Hérité de Control) |
| SkinID |
Remplace la propriété de base pour empêcher l’affectation d’une valeur. |
| StaticConnections |
Obtient une collection de connexions statiques déclarées dans l’élément |
| TemplateControl |
Obtient ou définit une référence au modèle qui contient ce contrôle. (Hérité de Control) |
| TemplateSourceDirectory |
Obtient le répertoire virtuel du PageUserControl ou qui contient le contrôle serveur actuel. (Hérité de Control) |
| UniqueID |
Obtient l’identificateur unique qualifié hiérarchiquement pour le contrôle serveur. (Hérité de Control) |
| ValidateRequestMode |
Obtient ou définit une valeur qui indique si le contrôle vérifie l’entrée du client à partir du navigateur pour obtenir des valeurs potentiellement dangereuses. (Hérité de Control) |
| ViewState |
Obtient un dictionnaire d’informations d’état qui vous permet d’enregistrer et de restaurer l’état d’affichage d’un contrôle serveur sur plusieurs requêtes pour la même page. (Hérité de Control) |
| ViewStateIgnoresCase |
Obtient une valeur qui indique si l’objet ne respecte pas la StateBag casse. (Hérité de Control) |
| ViewStateMode |
Obtient ou définit le mode d’état d’affichage de ce contrôle. (Hérité de Control) |
| Visible |
Remplace la propriété de base pour empêcher l’affectation d’une valeur. |
Méthodes
| Nom | Description |
|---|---|
| AddedControl(Control, Int32) |
Appelé après l’ajout d’un contrôle enfant à la Controls collection de l’objet Control . (Hérité de Control) |
| AddParsedSubObject(Object) |
Avertit le contrôle serveur qu’un élément, XML ou HTML, a été analysé et ajoute l’élément à l’objet du ControlCollection contrôle serveur. (Hérité de Control) |
| ApplyStyleSheetSkin(Page) |
Applique les propriétés de style définies dans la feuille de style de page au contrôle. (Hérité de Control) |
| BeginRenderTracing(TextWriter, Object) |
Commence le suivi au moment du design des données de rendu. (Hérité de Control) |
| BuildProfileTree(String, Boolean) |
Collecte des informations sur le contrôle serveur et le remet à la Trace propriété à afficher lorsque le suivi est activé pour la page. (Hérité de Control) |
| ClearCachedClientID() |
Définit la valeur mise en ClientID cache sur |
| ClearChildControlState() |
Supprime les informations d’état du contrôle pour les contrôles enfants du contrôle serveur. (Hérité de Control) |
| ClearChildState() |
Supprime les informations d’état d’affichage et d’état de contrôle pour tous les contrôles enfants du contrôle serveur. (Hérité de Control) |
| ClearChildViewState() |
Supprime les informations d’état d’affichage de tous les contrôles enfants du contrôle serveur. (Hérité de Control) |
| ClearEffectiveClientIDMode() |
Définit la ClientIDMode propriété de l’instance de contrôle actuelle et de tous les contrôles enfants sur Inherit. (Hérité de Control) |
| CreateChildControls() |
Appelé par l’infrastructure de page ASP.NET pour notifier les contrôles serveur qui utilisent l’implémentation basée sur la composition pour créer les contrôles enfants qu’ils contiennent en préparation de la publication ou du rendu. (Hérité de Control) |
| CreateControlCollection() |
Remplace la propriété de base pour empêcher le ProxyWebPartManager contrôle de contenir des contrôles. |
| DataBind() |
Lie une source de données au contrôle serveur appelé et à tous ses contrôles enfants. (Hérité de Control) |
| DataBind(Boolean) |
Lie une source de données au contrôle serveur appelé et à tous ses contrôles enfants avec une option pour déclencher l’événement DataBinding . (Hérité de Control) |
| DataBindChildren() |
Lie une source de données aux contrôles enfants du contrôle serveur. (Hérité de Control) |
| Dispose() |
Permet à un contrôle de serveur d’effectuer le nettoyage final avant de libérer de la mémoire. (Hérité de Control) |
| EndRenderTracing(TextWriter, Object) |
Met fin au suivi au moment du design des données de rendu. (Hérité de Control) |
| EnsureChildControls() |
Détermine si le contrôle serveur contient des contrôles enfants. Si ce n’est pas le cas, il crée des contrôles enfants. (Hérité de Control) |
| EnsureID() |
Crée un identificateur pour les contrôles qui n’ont pas d’identificateur affecté. (Hérité de Control) |
| Equals(Object) |
Détermine si l’objet spécifié est égal à l’objet actuel. (Hérité de Object) |
| FindControl(String, Int32) |
Recherche dans le conteneur d’affectation de noms actuel un contrôle serveur avec l’entier spécifié |
| FindControl(String) |
Recherche le conteneur d’affectation de noms actuel pour un contrôle serveur avec le paramètre spécifié |
| Focus() |
Remplace la méthode de base pour empêcher l’appel de la méthode. |
| GetDesignModeState() |
Obtient les données au moment du design pour un contrôle. (Hérité de Control) |
| GetHashCode() |
Sert de fonction de hachage par défaut. (Hérité de Object) |
| GetRouteUrl(Object) |
Obtient l’URL qui correspond à un ensemble de paramètres de routage. (Hérité de Control) |
| GetRouteUrl(RouteValueDictionary) |
Obtient l’URL qui correspond à un ensemble de paramètres de routage. (Hérité de Control) |
| GetRouteUrl(String, Object) |
Obtient l’URL qui correspond à un ensemble de paramètres d’itinéraire et à un nom d’itinéraire. (Hérité de Control) |
| GetRouteUrl(String, RouteValueDictionary) |
Obtient l’URL qui correspond à un ensemble de paramètres d’itinéraire et à un nom d’itinéraire. (Hérité de Control) |
| GetType() |
Obtient la Type de l’instance actuelle. (Hérité de Object) |
| GetUniqueIDRelativeTo(Control) |
Retourne la partie préfixée de la UniqueID propriété du contrôle spécifié. (Hérité de Control) |
| HasControls() |
Détermine si le contrôle serveur contient des contrôles enfants. (Hérité de Control) |
| HasEvents() |
Retourne une valeur indiquant si les événements sont inscrits pour le contrôle ou les contrôles enfants. (Hérité de Control) |
| IsLiteralContent() |
Détermine si le contrôle serveur contient uniquement du contenu littéral. (Hérité de Control) |
| LoadControlState(Object) |
Restaure les informations d’état du contrôle à partir d’une demande de page précédente qui a été enregistrée par la SaveControlState() méthode. (Hérité de Control) |
| LoadViewState(Object) |
Restaure les informations d’état d’affichage à partir d’une demande de page précédente enregistrée par la SaveViewState() méthode. (Hérité de Control) |
| MapPathSecure(String) |
Récupère le chemin d’accès physique auquel un chemin virtuel, absolu ou relatif, est mappé. (Hérité de Control) |
| MemberwiseClone() |
Crée une copie superficielle du Objectactuel. (Hérité de Object) |
| OnBubbleEvent(Object, EventArgs) |
Détermine si l’événement pour le contrôle serveur est transmis à la hiérarchie de contrôle du serveur d’interface utilisateur de la page. (Hérité de Control) |
| OnDataBinding(EventArgs) |
Déclenche l’événement DataBinding. (Hérité de Control) |
| OnInit(EventArgs) |
Déclenche l’événement Init et initialise le contrôle. |
| OnLoad(EventArgs) |
Déclenche l’événement Load. (Hérité de Control) |
| OnPreRender(EventArgs) |
Déclenche l’événement PreRender. (Hérité de Control) |
| OnUnload(EventArgs) |
Déclenche l’événement Unload. (Hérité de Control) |
| OpenFile(String) |
Obtient un Stream élément utilisé pour lire un fichier. (Hérité de Control) |
| RaiseBubbleEvent(Object, EventArgs) |
Affecte toutes les sources de l’événement et ses informations au parent du contrôle. (Hérité de Control) |
| RemovedControl(Control) |
Appelé après la suppression d’un contrôle enfant de la Controls collection de l’objet Control . (Hérité de Control) |
| Render(HtmlTextWriter) |
Envoie le contenu du contrôle serveur à un objet fourni HtmlTextWriter , qui écrit le contenu à afficher sur le client. (Hérité de Control) |
| RenderChildren(HtmlTextWriter) |
Génère le contenu des enfants d’un contrôle serveur dans un objet fourni HtmlTextWriter , qui écrit le contenu à restituer sur le client. (Hérité de Control) |
| RenderControl(HtmlTextWriter, ControlAdapter) |
Génère le contenu du contrôle serveur sur un objet fourni HtmlTextWriter à l’aide d’un objet fourni ControlAdapter . (Hérité de Control) |
| RenderControl(HtmlTextWriter) |
Génère le contenu du contrôle serveur dans un objet fourni HtmlTextWriter et stocke les informations de suivi sur le contrôle si le suivi est activé. (Hérité de Control) |
| ResolveAdapter() |
Obtient l’adaptateur de contrôle responsable du rendu du contrôle spécifié. (Hérité de Control) |
| ResolveClientUrl(String) |
Obtient une URL qui peut être utilisée par le navigateur. (Hérité de Control) |
| ResolveUrl(String) |
Convertit une URL en une URL utilisable sur le client demandeur. (Hérité de Control) |
| SaveControlState() |
Enregistre les modifications d’état de contrôle du serveur qui se sont produites depuis la publication de la page sur le serveur. (Hérité de Control) |
| SaveViewState() |
Enregistre les modifications de l’état d’affichage du contrôle de serveur qui se sont produites depuis la publication de la page sur le serveur. (Hérité de Control) |
| SetDesignModeState(IDictionary) |
Définit les données au moment du design pour un contrôle. (Hérité de Control) |
| SetRenderMethodDelegate(RenderMethod) |
Affecte un délégué de gestionnaire d’événements pour restituer le contrôle serveur et son contenu dans son contrôle parent. (Hérité de Control) |
| SetTraceData(Object, Object, Object) |
Définit les données de trace pour le suivi au moment du design des données de rendu, à l’aide de l’objet suivi, de la clé de données de trace et de la valeur des données de trace. (Hérité de Control) |
| SetTraceData(Object, Object) |
Définit les données de trace pour le suivi au moment du design des données de rendu, à l’aide de la clé de données de trace et de la valeur des données de trace. (Hérité de Control) |
| ToString() |
Retourne une chaîne qui représente l’objet actuel. (Hérité de Object) |
| TrackViewState() |
Provoque le suivi des modifications d’état d’affichage apportées au contrôle serveur afin qu’ils puissent être stockés dans l’objet du StateBag contrôle serveur. Cet objet est accessible via la ViewState propriété. (Hérité de Control) |
Événements
| Nom | Description |
|---|---|
| DataBinding |
Se produit lorsque le contrôle serveur se lie à une source de données. (Hérité de Control) |
| Disposed |
Se produit lorsqu’un contrôle serveur est libéré de la mémoire, qui est la dernière étape du cycle de vie du contrôle de serveur lorsqu’une page ASP.NET est demandée. (Hérité de Control) |
| Init |
Se produit lorsque le contrôle serveur est initialisé, qui est la première étape de son cycle de vie. (Hérité de Control) |
| Load |
Se produit lorsque le contrôle serveur est chargé dans l’objet Page . (Hérité de Control) |
| PreRender |
Se produit après le chargement de l’objet Control , mais avant le rendu. (Hérité de Control) |
| Unload |
Se produit lorsque le contrôle serveur est déchargé de la mémoire. (Hérité de Control) |
Implémentations d’interfaces explicites
| Nom | Description |
|---|---|
| IControlBuilderAccessor.ControlBuilder |
Pour obtenir une description de ce membre, consultez ControlBuilder. (Hérité de Control) |
| IControlDesignerAccessor.GetDesignModeState() |
Pour obtenir une description de ce membre, consultez GetDesignModeState(). (Hérité de Control) |
| IControlDesignerAccessor.SetDesignModeState(IDictionary) |
Pour obtenir une description de ce membre, consultez SetDesignModeState(IDictionary). (Hérité de Control) |
| IControlDesignerAccessor.SetOwnerControl(Control) |
Pour obtenir une description de ce membre, consultez SetOwnerControl(Control). (Hérité de Control) |
| IControlDesignerAccessor.UserData |
Pour obtenir une description de ce membre, consultez UserData. (Hérité de Control) |
| IDataBindingsAccessor.DataBindings |
Pour obtenir une description de ce membre, consultez DataBindings. (Hérité de Control) |
| IDataBindingsAccessor.HasDataBindings |
Pour obtenir une description de ce membre, consultez HasDataBindings. (Hérité de Control) |
| IExpressionsAccessor.Expressions |
Pour obtenir une description de ce membre, consultez Expressions. (Hérité de Control) |
| IExpressionsAccessor.HasExpressions |
Pour obtenir une description de ce membre, consultez HasExpressions. (Hérité de Control) |
| IParserAccessor.AddParsedSubObject(Object) |
Pour obtenir une description de ce membre, consultez AddParsedSubObject(Object). (Hérité de Control) |
Méthodes d’extension
| Nom | Description |
|---|---|
| FindDataSourceControl(Control) |
Retourne la source de données associée au contrôle de données pour le contrôle spécifié. |
| FindFieldTemplate(Control, String) |
Retourne le modèle de champ de la colonne spécifiée dans le conteneur d’affectation de noms du contrôle spécifié. |
| FindMetaTable(Control) |
Retourne l’objet métatable pour le contrôle de données contenant. |