Partager via


ProxyWebPartManager Classe

Définition

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
ProxyWebPartManager
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="&nbsp;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="&nbsp;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 <asp:proxywebpartmanager> d’une page de contenu.

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 null.

(Hérité de Control)
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é id et spécifié dans le pathOffset paramètre, ce qui facilite la recherche. Vous ne devez pas remplacer cette version de la FindControl méthode.

(Hérité de Control)
FindControl(String)

Recherche le conteneur d’affectation de noms actuel pour un contrôle serveur avec le paramètre spécifié id .

(Hérité de Control)
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.

S’applique à

Voir aussi