ProxyWebPartManager Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
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à
- 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=" Display Mode"
Font-Bold="true"
Font-Size="8"
Width="120"
AssociatedControlID="DisplayModeDropdown"/>
<asp:DropDownList ID="DisplayModeDropdown" runat="server"
AutoPostBack="true"
Width="120"
OnSelectedIndexChanged="DisplayModeDropdown_SelectedIndexChanged" />
<asp:LinkButton ID="LinkButton1" runat="server"
Text="Reset User State"
ToolTip="Reset the current user's personalization data for the page."
Font-Size="8"
OnClick="LinkButton1_Click" />
<asp:Panel ID="Panel2" runat="server"
GroupingText="Personalization Scope"
Font-Bold="true"
Font-Size="8"
Visible="false" >
<asp:RadioButton ID="RadioButton1" runat="server"
Text="User"
AutoPostBack="true"
GroupName="Scope" OnCheckedChanged="RadioButton1_CheckedChanged" />
<asp:RadioButton ID="RadioButton2" runat="server"
Text="Shared"
AutoPostBack="true"
GroupName="Scope"
OnCheckedChanged="RadioButton2_CheckedChanged" />
</asp:Panel>
</asp:Panel>
</div>
<%@ control language="vb" classname="DisplayModeMenuVB"%>
<script runat="server">
' Use a field to reference the current WebPartManager.
Dim _manager As WebPartManager
Sub Page_Init(ByVal sender As Object, ByVal e As EventArgs)
AddHandler Page.InitComplete, AddressOf InitComplete
End Sub
Sub InitComplete(ByVal sender As Object, ByVal e As System.EventArgs)
_manager = WebPartManager.GetCurrentWebPartManager(Page)
Dim browseModeName As String = WebPartManager.BrowseDisplayMode.Name
' Fill the dropdown with the names of supported display modes.
Dim mode As WebPartDisplayMode
For Each mode In _manager.SupportedDisplayModes
Dim modeName As String = mode.Name
' Make sure a mode is enabled before adding it.
If mode.IsEnabled(_manager) Then
Dim item As New ListItem(modeName, modeName)
DisplayModeDropdown.Items.Add(item)
End If
Next mode
' If shared scope is allowed for this user, display the scope-switching
' UI and select the appropriate radio button for the current user scope.
If _manager.Personalization.CanEnterSharedScope Then
Panel2.Visible = True
If _manager.Personalization.Scope = PersonalizationScope.User Then
RadioButton1.Checked = True
Else
RadioButton2.Checked = True
End If
End If
End Sub
' Change the page to the selected display mode.
Sub DisplayModeDropdown_SelectedIndexChanged(ByVal sender As Object, _
ByVal e As EventArgs)
Dim selectedMode As String = DisplayModeDropdown.SelectedValue
Dim mode As WebPartDisplayMode = _
_manager.SupportedDisplayModes(selectedMode)
If Not (mode Is Nothing) Then
_manager.DisplayMode = mode
End If
End Sub
' Set the selected item equal to the current display mode.
Sub Page_PreRender(ByVal sender As Object, ByVal e As EventArgs)
Dim items As ListItemCollection = DisplayModeDropdown.Items
Dim selectedIndex As Integer = _
items.IndexOf(items.FindByText(_manager.DisplayMode.Name))
DisplayModeDropdown.SelectedIndex = selectedIndex
End Sub
' Reset all of a user's personalization data for the page.
Protected Sub LinkButton1_Click(ByVal sender As Object, _
ByVal e As EventArgs)
_manager.Personalization.ResetPersonalizationState()
End Sub
' If not in User personalization scope, toggle into it.
Protected Sub RadioButton1_CheckedChanged(ByVal sender As Object, _
ByVal e As EventArgs)
If _manager.Personalization.Scope = PersonalizationScope.Shared Then
_manager.Personalization.ToggleScope()
End If
End Sub
' If not in Shared scope, and if user is allowed, toggle the scope.
Protected Sub RadioButton2_CheckedChanged(ByVal sender As Object, _
ByVal e As EventArgs)
If _manager.Personalization.CanEnterSharedScope AndAlso _
_manager.Personalization.Scope = PersonalizationScope.User Then
_manager.Personalization.ToggleScope()
End If
End Sub
</script>
<div>
<asp:Panel ID="Panel1" runat="server"
Borderwidth="1"
Width="230"
BackColor="lightgray"
Font-Names="Verdana, Arial, Sans Serif" >
<asp:Label ID="Label1" runat="server"
Text=" Display Mode"
Font-Bold="true"
Font-Size="8"
Width="120"
AssociatedControlID="DisplayModeDropdown"/>
<asp:DropDownList ID="DisplayModeDropdown" runat="server"
AutoPostBack="true"
Width="120"
OnSelectedIndexChanged="DisplayModeDropdown_SelectedIndexChanged" />
<asp:LinkButton ID="LinkButton1" runat="server"
Text="Reset User State"
ToolTip="Reset the current user's personalization data for the page."
Font-Size="8"
OnClick="LinkButton1_Click" />
<asp:Panel ID="Panel2" runat="server"
GroupingText="Personalization Scope"
Font-Bold="true"
Font-Size="8"
Visible="false" >
<asp:RadioButton ID="RadioButton1" runat="server"
Text="User"
AutoPostBack="true"
GroupName="Scope" OnCheckedChanged="RadioButton1_CheckedChanged" />
<asp:RadioButton ID="RadioButton2" runat="server"
Text="Shared"
AutoPostBack="true"
GroupName="Scope"
OnCheckedChanged="RadioButton2_CheckedChanged" />
</asp:Panel>
</asp:Panel>
</div>
La 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 |
| 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 |
| 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 |
| FindControl(String) |
Cerca nel contenitore di denominazione corrente un controllo server con il parametro specificato |
| 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. |