Condividi tramite


ProxyWebPartManager Classe

Definizione

Consente agli sviluppatori di dichiarare connessioni statiche in una pagina del contenuto quando un WebPartManager controllo è stato dichiarato nella pagina master associata della pagina del contenuto.

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
Ereditarietà
ProxyWebPartManager
Attributi

Esempio

Nell'esempio di codice seguente viene illustrato come usare la ProxyWebPartManager classe per dichiarare connessioni statiche nelle pagine di contenuto di un'applicazione che usa pagine master. L'esempio ha cinque parti:

  • Controllo utente che consente di modificare la modalità di visualizzazione web part in una pagina.

  • Codice sorgente per un'interfaccia e due WebPart controlli che fungono da provider e consumer per una connessione.

  • Pagina Web master che ospita il controllo utente, le pagine del contenuto e il WebPartManager controllo per l'applicazione.

  • Pagina Web del contenuto che ospita un ProxyWebPartManager controllo, i due controlli personalizzati WebPart e una connessione statica per connettere i due controlli.

  • Spiegazione di come eseguire la pagina di esempio.

La prima parte di questo esempio di codice è il controllo utente che consente agli utenti di modificare le modalità di visualizzazione in una pagina Web. Salvare il codice sorgente seguente in un file con estensione ascx, assegnandogli il nome file assegnato all'attributo Src della Register direttiva per questo controllo utente, che si trova nella parte superiore della pagina master host. Per informazioni dettagliate sulle modalità di visualizzazione e una descrizione del codice sorgente in questo controllo, vedere Procedura dettagliata: Modifica delle modalità di visualizzazione in una pagina web part.

<%@ 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 seconda parte dell'esempio di codice è il codice sorgente per l'interfaccia e i controlli. Il file di origine contiene un'interfaccia semplice denominata IZipCode. Esiste anche una WebPart classe denominata ZipCodeWebPart che implementa l'interfaccia e funge da controllo del provider. Il ProvideIZipCode metodo è il metodo di callback che implementa l'unico membro dell'interfaccia. Il metodo restituisce semplicemente un'istanza dell'interfaccia. Si noti che il metodo è contrassegnato con un ConnectionProvider attributo nei relativi metadati. Si tratta del meccanismo per identificare il metodo come metodo di callback per il punto di connessione del provider. L'altra WebPart classe è denominata WeatherWebParte funge da consumer per la connessione. Questa classe ha un metodo denominato GetZipCode che ottiene un'istanza dell'interfaccia IZipCode dal controllo del provider. Si noti che questo metodo viene contrassegnato come metodo del punto di connessione del consumer con un ConnectionConsumer attributo nei relativi metadati.

Per eseguire l'esempio di codice, è necessario compilare questo codice sorgente. È possibile compilarlo in modo esplicito e inserire l'assembly risultante nella cartella Bin del sito Web o nella Global Assembly Cache. In alternativa, è possibile inserire il codice sorgente nella cartella App_Code del sito, in cui verrà compilato in modo dinamico in fase di esecuzione. Questo esempio di codice usa la compilazione dinamica. Per una procedura dettagliata che illustra come compilare, vedere Procedura dettagliata: Sviluppo e uso di un controllo server Web personalizzato.

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 terza parte dell'esempio di codice è la pagina master. È necessario accettare il codice sorgente seguente e salvarlo in un file, denominandolo MasterPageCS.master o MasterPageVB.master (a seconda della lingua usata). Si noti che la pagina master contiene una Register direttiva per registrare il controllo utente e fa riferimento al controllo utente stesso nel corpo della pagina. La pagina master dichiara anche il singolo <asp:webpartmanager> elemento utilizzato per questa pagina e tutte le pagine di contenuto correlate. Infine, la pagina master ha un <asp: contentplaceholder> elemento che dichiara il punto nella pagina in cui viene inserita la pagina del contenuto.

<%@ 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 quarta parte dell'esempio di codice è la pagina del contenuto. È necessario copiare il codice sorgente seguente e salvarlo in un file con un'estensione .aspx. Si noti che la relativa Page direttiva contiene un MasterFile attributo per fare riferimento alla pagina master. Inoltre, questa pagina include una Register direttiva per registrare il file nella cartella App_Code che contiene i controlli personalizzati WebPart compilati dinamicamente che partecipano alla connessione. All'interno dei <asp:content> tag della pagina è presente un <asp:proxywebpartmanager> elemento , con un elemento figlio, che a sua volta ha un elemento figlio <staticconnections><asp:webpartconnection> per dichiarare i dettagli della connessione. All'interno dei <script> tag nella pagina, il Button1_Click metodo aggiunge codice che accede al controllo principale WebPartManager nella pagina master e al ProxyWebPartManager controllo nella pagina del contenuto e scrive alcuni dei relativi dettagli nella pagina.

<%@ 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>

Dopo aver caricato la pagina in un browser, fare clic sul pulsante WebPartManager Information (Informazioni webPartManager) e osservare le informazioni sul WebPartManager controllo nella pagina master e sul ProxyWebPartManager controllo nella pagina del contenuto. Si noti, ad esempio, che entrambi hanno lo stesso conteggio nelle rispettive proprietà che tengono traccia delle connessioni statiche (la StaticConnections proprietà ). Si noti anche che anche se il WebPartManager controllo dispone di una WebParts proprietà che tiene traccia del numero di WebPart controlli gestiti, il ProxyWebPartManager controllo non dispone di tale proprietà, perché l'unico scopo è contenere connessioni statiche.

Commenti

Il ProxyWebPartManager controllo esiste per lo scenario specifico di dichiarazione di connessioni statiche nelle pagine di contenuto quando un WebPartManager controllo è già stato dichiarato in una pagina master.

Per impostazione predefinita, una pagina Web che utilizza controlli Web part deve contenere un controllo (e un solo) WebPartManager che gestisce tutti i controlli Web part nella pagina. Quando un'applicazione Web part usa pagine master, è comune posizionare il WebPartManager controllo nella pagina master, perché tutte le pagine di contenuto vengono unite alla pagina master in fase di esecuzione e il singolo WebPartManager controllo gestirà tutti i controlli Web part di tutte le pagine di contenuto. Tuttavia, quando gli sviluppatori vogliono dichiarare connessioni statiche nelle pagine di contenuto di un'applicazione di questo tipo, potrebbero sembrare affrontare una limitazione. Una connessione web part statica può essere dichiarata solo aggiungendo un <asp:webpartconnection> elemento come elemento figlio di un <staticconnections> elemento, che deve essere un elemento figlio di un <asp:webpartmanager> elemento. Tuttavia, poiché il WebPartManager controllo è già stato dichiarato nella pagina master ed è quello consentito WebPartManager , gli sviluppatori non possono dichiarare controlli aggiuntivi WebPartManager nelle pagine del contenuto per aggiungere connessioni statiche.

Il ProxyWebPartManager controllo ha il posto del WebPartManager controllo in questo scenario. Gli sviluppatori dichiarano un <asp:proxywebpartmanager> elemento anziché un <asp:webpartmanager> elemento nelle pagine di contenuto e possono quindi dichiarare connessioni statiche come elementi figlio. In fase di esecuzione, le connessioni nel ProxyWebPartManager controllo vengono semplicemente aggiunte alla StaticConnections raccolta del WebPartManager controllo e considerate come qualsiasi altra connessione.

Poiché il ProxyWebPartManager controllo viene usato solo in questo particolare scenario di sviluppo, dispone di funzionalità più limitate rispetto alla WebPartManager classe . Infatti, anche se il ProxyWebPartManager controllo funge da proxy per contenere connessioni statiche per il WebPartManager controllo nelle pagine di contenuto, non eredita dal WebPartManager controllo . Eredita direttamente dalla Control classe ed esegue l'override solo di alcuni membri di base. Le EnableThemingproprietà , Visiblee SkinID vengono sostituite e assegnate valori che impediscono l'uso. Altre proprietà ereditate vengono sottoposte a override per regolare il comportamento della fase di progettazione, ma in caso contrario hanno lo stesso comportamento delle proprietà di base. Queste includono le Controls proprietà e ClientID . Infine, la ProxyWebPartManager classe ha una proprietà non ereditata. La StaticConnections proprietà restituisce la propria raccolta di connessioni statiche (un ProxyWebPartConnectionCollection oggetto ).

Per quanto riguarda i metodi, la ProxyWebPartManager classe esegue l'override in modo analogo solo di alcuni metodi, principalmente per limitare l'uso. Il metodo ereditato Focus è reso inutilizzabile generando un'eccezione se viene chiamato. Il CreateControlCollection metodo restituisce sempre una raccolta di controlli vuota, che ha l'effetto di impedire che sia in grado di contenere una raccolta di controlli. Infine, il OnInit metodo chiama il metodo di base e quindi assegna la raccolta di connessioni a cui fa riferimento la StaticConnections proprietà alla WebPartManager.StaticConnections proprietà del WebPartManager controllo . Questo ha l'effetto di eseguire il roll up di tutte le connessioni statiche dichiarate in tutte le pagine di contenuto e di renderle parte della raccolta di connessioni gestita dal WebPartManager controllo nella pagina master.

Costruttori

Nome Descrizione
ProxyWebPartManager()

Inizializza una nuova istanza della classe ProxyWebPartManager.

Proprietà

Nome Descrizione
Adapter

Ottiene l'adattatore specifico del browser per il controllo .

(Ereditato da Control)
AppRelativeTemplateSourceDirectory

Ottiene o imposta la directory virtuale relativa all'applicazione dell'oggetto Page o UserControl che contiene questo controllo.

(Ereditato da Control)
BindingContainer

Ottiene il controllo che contiene il data binding di questo controllo.

(Ereditato da Control)
ChildControlsCreated

Ottiene un valore che indica se sono stati creati i controlli figlio del controllo server.

(Ereditato da Control)
ClientID

Ottiene l'ID di controllo per il markup HTML generato da ASP.NET.

ClientIDMode

Ottiene o imposta l'algoritmo utilizzato per generare il valore della ClientID proprietà .

(Ereditato da Control)
ClientIDSeparator

Ottiene un valore di carattere che rappresenta il carattere separatore utilizzato nella ClientID proprietà .

(Ereditato da Control)
Context

Ottiene l'oggetto HttpContext associato al controllo server per la richiesta Web corrente.

(Ereditato da Control)
Controls

Ottiene un ControlCollection oggetto che rappresenta i controlli figlio per un controllo server specificato nella gerarchia dell'interfaccia utente.

DataItemContainer

Ottiene un riferimento al contenitore di denominazione se il contenitore di denominazione implementa IDataItemContainer.

(Ereditato da Control)
DataKeysContainer

Ottiene un riferimento al contenitore di denominazione se il contenitore di denominazione implementa IDataKeysControl.

(Ereditato da Control)
DesignMode

Ottiene un valore che indica se un controllo viene utilizzato in un'area di progettazione.

(Ereditato da Control)
EnableTheming

Esegue l'override della proprietà di base per impedire l'utilizzo dei temi.

EnableViewState

Ottiene o imposta un valore che indica se il controllo server mantiene lo stato di visualizzazione e lo stato di visualizzazione di tutti i controlli figlio contenuti, al client richiedente.

(Ereditato da Control)
Events

Ottiene un elenco di delegati del gestore eventi per il controllo . Questa proprietà è di sola lettura.

(Ereditato da Control)
HasChildViewState

Ottiene un valore che indica se i controlli figlio del controllo server corrente hanno impostazioni dello stato di visualizzazione salvate.

(Ereditato da Control)
ID

Ottiene o imposta l'identificatore programmatico assegnato al controllo server.

(Ereditato da Control)
IdSeparator

Ottiene il carattere utilizzato per separare gli identificatori di controllo.

(Ereditato da Control)
IsChildControlStateCleared

Ottiene un valore che indica se i controlli contenuti all'interno di questo controllo hanno uno stato di controllo.

(Ereditato da Control)
IsTrackingViewState

Ottiene un valore che indica se il controllo server salva le modifiche apportate allo stato di visualizzazione.

(Ereditato da Control)
IsViewStateEnabled

Ottiene un valore che indica se lo stato di visualizzazione è abilitato per questo controllo.

(Ereditato da Control)
LoadViewStateByID

Ottiene un valore che indica se il controllo partecipa al caricamento dello stato di visualizzazione in ID base al posto dell'indice.

(Ereditato da Control)
NamingContainer

Ottiene un riferimento al contenitore di denominazione del controllo server, che crea uno spazio dei nomi univoco per la differenziazione tra i controlli server con lo stesso ID valore della proprietà.

(Ereditato da Control)
Page

Ottiene un riferimento all'istanza Page che contiene il controllo server.

(Ereditato da Control)
Parent

Ottiene un riferimento al controllo padre del controllo server nella gerarchia dei controlli pagina.

(Ereditato da Control)
RenderingCompatibility

Ottiene un valore che specifica la versione ASP.NET con cui è stato eseguito il rendering del codice HTML sarà compatibile.

(Ereditato da Control)
Site

Ottiene informazioni sul contenitore che ospita il controllo corrente durante il rendering in un'area di progettazione.

(Ereditato da Control)
SkinID

Esegue l'override della proprietà di base per impedire l'assegnazione di un valore.

StaticConnections

Ottiene una raccolta di connessioni statiche dichiarate all'interno dell'elemento <asp:proxywebpartmanager> in una pagina di contenuto.

TemplateControl

Ottiene o imposta un riferimento al modello che contiene questo controllo.

(Ereditato da Control)
TemplateSourceDirectory

Ottiene la directory virtuale dell'oggetto Page o UserControl che contiene il controllo server corrente.

(Ereditato da Control)
UniqueID

Ottiene l'identificatore univoco e qualificato gerarchicamente per il controllo server.

(Ereditato da Control)
ValidateRequestMode

Ottiene o imposta un valore che indica se il controllo controlla l'input client dal browser per individuare valori potenzialmente pericolosi.

(Ereditato da Control)
ViewState

Ottiene un dizionario di informazioni sullo stato che consente di salvare e ripristinare lo stato di visualizzazione di un controllo server tra più richieste per la stessa pagina.

(Ereditato da Control)
ViewStateIgnoresCase

Ottiene un valore che indica se l'oggetto StateBag non fa distinzione tra maiuscole e minuscole.

(Ereditato da Control)
ViewStateMode

Ottiene o imposta la modalità dello stato di visualizzazione di questo controllo.

(Ereditato da Control)
Visible

Esegue l'override della proprietà di base per impedire l'assegnazione di un valore.

Metodi

Nome Descrizione
AddedControl(Control, Int32)

Chiamato dopo l'aggiunta di un controllo figlio all'insieme Controls dell'oggetto Control .

(Ereditato da Control)
AddParsedSubObject(Object)

Notifica al controllo server che un elemento, XML o HTML, è stato analizzato e aggiunge l'elemento all'oggetto del ControlCollection controllo server.

(Ereditato da Control)
ApplyStyleSheetSkin(Page)

Applica le proprietà di stile definite nel foglio di stile della pagina al controllo .

(Ereditato da Control)
BeginRenderTracing(TextWriter, Object)

Inizia la traccia in fase di progettazione dei dati di rendering.

(Ereditato da Control)
BuildProfileTree(String, Boolean)

Raccoglie informazioni sul controllo server e le distribuisce alla Trace proprietà da visualizzare quando la traccia è abilitata per la pagina.

(Ereditato da Control)
ClearCachedClientID()

Imposta il valore memorizzato nella ClientID cache su null.

(Ereditato da Control)
ClearChildControlState()

Elimina le informazioni sullo stato del controllo per i controlli figlio del controllo server.

(Ereditato da Control)
ClearChildState()

Elimina le informazioni sullo stato di visualizzazione e sullo stato del controllo per tutti i controlli figlio del controllo server.

(Ereditato da Control)
ClearChildViewState()

Elimina le informazioni sullo stato di visualizzazione per tutti i controlli figlio del controllo server.

(Ereditato da Control)
ClearEffectiveClientIDMode()

Imposta la ClientIDMode proprietà dell'istanza del controllo corrente e di tutti i controlli figlio su Inherit.

(Ereditato da Control)
CreateChildControls()

Chiamato dal framework di pagina ASP.NET per notificare ai controlli server che usano l'implementazione basata sulla composizione per creare tutti i controlli figlio che contengono in preparazione alla registrazione o al rendering.

(Ereditato da Control)
CreateControlCollection()

Esegue l'override della proprietà di base per impedire al ProxyWebPartManager controllo di contenere controlli.

DataBind()

Associa un'origine dati al controllo server richiamato e a tutti i relativi controlli figlio.

(Ereditato da Control)
DataBind(Boolean)

Associa un'origine dati al controllo server richiamato e a tutti i relativi controlli figlio con un'opzione per generare l'evento DataBinding .

(Ereditato da Control)
DataBindChildren()

Associa un'origine dati ai controlli figlio del controllo server.

(Ereditato da Control)
Dispose()

Consente a un controllo server di eseguire la pulizia finale prima che venga rilasciata dalla memoria.

(Ereditato da Control)
EndRenderTracing(TextWriter, Object)

Termina la traccia in fase di progettazione dei dati di rendering.

(Ereditato da Control)
EnsureChildControls()

Determina se il controllo server contiene controlli figlio. In caso contrario, crea controlli figlio.

(Ereditato da Control)
EnsureID()

Crea un identificatore per i controlli a cui non è assegnato un identificatore.

(Ereditato da Control)
Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.

(Ereditato da Object)
FindControl(String, Int32)

Cerca nel contenitore di denominazione corrente un controllo server con l'oggetto specificato id e un numero intero, specificato nel pathOffset parametro , che facilita la ricerca. Non è consigliabile eseguire l'override di questa versione del FindControl metodo .

(Ereditato da Control)
FindControl(String)

Cerca nel contenitore di denominazione corrente un controllo server con il parametro specificato id .

(Ereditato da Control)
Focus()

Esegue l'override del metodo di base per impedire che il metodo venga chiamato.

GetDesignModeState()

Ottiene i dati in fase di progettazione per un controllo .

(Ereditato da Control)
GetHashCode()

Funge da funzione hash predefinita.

(Ereditato da Object)
GetRouteUrl(Object)

Ottiene l'URL che corrisponde a un set di parametri di route.

(Ereditato da Control)
GetRouteUrl(RouteValueDictionary)

Ottiene l'URL che corrisponde a un set di parametri di route.

(Ereditato da Control)
GetRouteUrl(String, Object)

Ottiene l'URL che corrisponde a un set di parametri di route e un nome di route.

(Ereditato da Control)
GetRouteUrl(String, RouteValueDictionary)

Ottiene l'URL che corrisponde a un set di parametri di route e un nome di route.

(Ereditato da Control)
GetType()

Ottiene il Type dell'istanza corrente.

(Ereditato da Object)
GetUniqueIDRelativeTo(Control)

Restituisce la parte con prefisso della UniqueID proprietà del controllo specificato.

(Ereditato da Control)
HasControls()

Determina se il controllo server contiene controlli figlio.

(Ereditato da Control)
HasEvents()

Restituisce un valore che indica se gli eventi vengono registrati per il controllo o per i controlli figlio.

(Ereditato da Control)
IsLiteralContent()

Determina se il controllo server contiene solo contenuto letterale.

(Ereditato da Control)
LoadControlState(Object)

Ripristina le informazioni sullo stato del controllo da una richiesta di pagina precedente salvata dal SaveControlState() metodo .

(Ereditato da Control)
LoadViewState(Object)

Ripristina le informazioni sullo stato di visualizzazione da una richiesta di pagina precedente salvata dal SaveViewState() metodo .

(Ereditato da Control)
MapPathSecure(String)

Recupera il percorso fisico a cui viene mappato un percorso virtuale, assoluto o relativo.

(Ereditato da Control)
MemberwiseClone()

Crea una copia superficiale del Objectcorrente.

(Ereditato da Object)
OnBubbleEvent(Object, EventArgs)

Determina se l'evento per il controllo server viene passato alla gerarchia di controllo server dell'interfaccia utente della pagina.

(Ereditato da Control)
OnDataBinding(EventArgs)

Genera l'evento DataBinding.

(Ereditato da Control)
OnInit(EventArgs)

Genera l'evento Init e inizializza il controllo.

OnLoad(EventArgs)

Genera l'evento Load.

(Ereditato da Control)
OnPreRender(EventArgs)

Genera l'evento PreRender.

(Ereditato da Control)
OnUnload(EventArgs)

Genera l'evento Unload.

(Ereditato da Control)
OpenFile(String)

Ottiene un Stream oggetto utilizzato per leggere un file.

(Ereditato da Control)
RaiseBubbleEvent(Object, EventArgs)

Assegna tutte le origini dell'evento e le relative informazioni all'elemento padre del controllo.

(Ereditato da Control)
RemovedControl(Control)

Chiamato dopo che un controllo figlio viene rimosso dall'insieme Controls dell'oggetto Control .

(Ereditato da Control)
Render(HtmlTextWriter)

Invia il contenuto del controllo server a un oggetto specificato HtmlTextWriter , che scrive il contenuto di cui eseguire il rendering nel client.

(Ereditato da Control)
RenderChildren(HtmlTextWriter)

Restituisce il contenuto degli elementi figlio di un controllo server in un oggetto fornito HtmlTextWriter , che scrive il contenuto di cui eseguire il rendering nel client.

(Ereditato da Control)
RenderControl(HtmlTextWriter, ControlAdapter)

Restituisce il contenuto del controllo server a un oggetto fornito HtmlTextWriter utilizzando un oggetto fornito ControlAdapter .

(Ereditato da Control)
RenderControl(HtmlTextWriter)

Restituisce il contenuto del controllo server in un oggetto fornito HtmlTextWriter e archivia le informazioni di traccia sul controllo se la traccia è abilitata.

(Ereditato da Control)
ResolveAdapter()

Ottiene l'adattatore di controllo responsabile del rendering del controllo specificato.

(Ereditato da Control)
ResolveClientUrl(String)

Ottiene un URL che può essere utilizzato dal browser.

(Ereditato da Control)
ResolveUrl(String)

Converte un URL in un URL utilizzabile nel client richiedente.

(Ereditato da Control)
SaveControlState()

Salva le modifiche apportate allo stato del controllo server dopo il postback della pagina al server.

(Ereditato da Control)
SaveViewState()

Salva le modifiche apportate allo stato di visualizzazione controllo server dopo il postback della pagina al server.

(Ereditato da Control)
SetDesignModeState(IDictionary)

Imposta i dati in fase di progettazione per un controllo .

(Ereditato da Control)
SetRenderMethodDelegate(RenderMethod)

Assegna un delegato del gestore eventi per eseguire il rendering del controllo server e del relativo contenuto nel controllo padre.

(Ereditato da Control)
SetTraceData(Object, Object, Object)

Imposta i dati di traccia per la traccia in fase di progettazione dei dati di rendering, usando l'oggetto tracciato, la chiave dei dati di traccia e il valore dei dati di traccia.

(Ereditato da Control)
SetTraceData(Object, Object)

Imposta i dati di traccia per la traccia in fase di progettazione dei dati di rendering, usando la chiave dei dati di traccia e il valore dei dati di traccia.

(Ereditato da Control)
ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

(Ereditato da Object)
TrackViewState()

Determina il rilevamento delle modifiche dello stato di visualizzazione al controllo server in modo che possano essere archiviate nell'oggetto del StateBag controllo server. Questo oggetto è accessibile tramite la ViewState proprietà .

(Ereditato da Control)

Eventi

Nome Descrizione
DataBinding

Si verifica quando il controllo server viene associato a un'origine dati.

(Ereditato da Control)
Disposed

Si verifica quando viene rilasciato un controllo server dalla memoria, ovvero l'ultima fase del ciclo di vita del controllo server quando viene richiesta una pagina ASP.NET.

(Ereditato da Control)
Init

Si verifica quando il controllo server viene inizializzato, ovvero il primo passaggio del ciclo di vita.

(Ereditato da Control)
Load

Si verifica quando il controllo server viene caricato nell'oggetto Page .

(Ereditato da Control)
PreRender

Si verifica dopo il caricamento dell'oggetto Control , ma prima del rendering.

(Ereditato da Control)
Unload

Si verifica quando il controllo server viene scaricato dalla memoria.

(Ereditato da Control)

Implementazioni dell'interfaccia esplicita

Nome Descrizione
IControlBuilderAccessor.ControlBuilder

Per una descrizione di questo membro, vedere ControlBuilder.

(Ereditato da Control)
IControlDesignerAccessor.GetDesignModeState()

Per una descrizione di questo membro, vedere GetDesignModeState().

(Ereditato da Control)
IControlDesignerAccessor.SetDesignModeState(IDictionary)

Per una descrizione di questo membro, vedere SetDesignModeState(IDictionary).

(Ereditato da Control)
IControlDesignerAccessor.SetOwnerControl(Control)

Per una descrizione di questo membro, vedere SetOwnerControl(Control).

(Ereditato da Control)
IControlDesignerAccessor.UserData

Per una descrizione di questo membro, vedere UserData.

(Ereditato da Control)
IDataBindingsAccessor.DataBindings

Per una descrizione di questo membro, vedere DataBindings.

(Ereditato da Control)
IDataBindingsAccessor.HasDataBindings

Per una descrizione di questo membro, vedere HasDataBindings.

(Ereditato da Control)
IExpressionsAccessor.Expressions

Per una descrizione di questo membro, vedere Expressions.

(Ereditato da Control)
IExpressionsAccessor.HasExpressions

Per una descrizione di questo membro, vedere HasExpressions.

(Ereditato da Control)
IParserAccessor.AddParsedSubObject(Object)

Per una descrizione di questo membro, vedere AddParsedSubObject(Object).

(Ereditato da Control)

Metodi di estensione

Nome Descrizione
FindDataSourceControl(Control)

Restituisce l'origine dati associata al controllo dati per il controllo specificato.

FindFieldTemplate(Control, String)

Restituisce il modello di campo per la colonna specificata nel contenitore di denominazione del controllo specificato.

FindMetaTable(Control)

Restituisce l'oggetto metatable per il controllo dati contenitore.

Si applica a

Vedi anche