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 contenuto quando è stato dichiarato un controllo WebPartManager nella pagina master associata alla pagina 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 include 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 di 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, assegnando 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 metodo ProvideIZipCode
è 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 WeatherWebPart
e funge da consumer per la connessione. Questa classe ha un metodo denominato GetZipCode
che ottiene un'istanza dell'interfaccia IZipCode
dal controllo 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. In questo esempio di codice viene usata la compilazione dinamica. Per una procedura dettagliata che illustra come eseguire la compilazione, 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 prendere 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 di 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. 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 <staticconnections>
, che a sua volta ha un elemento figlio <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 il 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 ha tale proprietà, in quanto 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 utilizza 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 da 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 di 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 trattate come qualsiasi altra connessione.
Poiché il ProxyWebPartManager controllo viene usato solo in questo particolare scenario di sviluppo, ha 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 del 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 ne impediscono l'uso. Altre proprietà ereditate vengono sottoposte a override per regolare il comportamento in 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 solo di alcuni metodi, principalmente per limitare l'uso. Il metodo ereditato Focus è reso inutilizzabile generando un'eccezione se viene chiamata. 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 . Ciò 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
ProxyWebPartManager() |
Inizializza una nuova istanza della classe ProxyWebPartManager. |
Proprietà
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 contenente questo controllo. (Ereditato da Control) |
BindingContainer |
Ottiene il controllo contenente l'associazione dati del controllo corrente. (Ereditato da Control) |
ChildControlsCreated |
Ottiene un valore che indica se i controlli figli del controllo server sono stati creati. (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 proprietà ClientID. (Ereditato da Control) |
ClientIDSeparator |
Ottiene un carattere che rappresenta il separatore utilizzato nella proprietà ClientID. (Ereditato da Control) |
Context |
Ottiene l'oggetto HttpContext associato al controllo server per la richiesta Web corrente. (Ereditato da Control) |
Controls |
Ottiene un oggetto ControlCollection 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à base per impedire l'utilizzo dei temi. |
EnableViewState |
Ottiene o imposta un valore che indica se lo stato di visualizzazione del controllo server deve essere persistente e lo stato di visualizzazione dei controlli figlio contenuti, per il client richiedente. (Ereditato da Control) |
Events |
Ottiene un elenco dei delegati del gestore eventi per il controllo. Questa proprietà è di sola lettura. (Ereditato da Control) |
HasChildViewState |
Ottiene un valore che indica se per i controlli figlio del controllo server corrente esistono impostazioni dello stato di visualizzazione salvate. (Ereditato da Control) |
ID |
Ottiene o imposta l'identificatore a livello di codice 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 in questo controllo dispongono di informazioni sullo stato del controllo. (Ereditato da Control) |
IsTrackingViewState |
Ottiene un valore che indica se il controllo server salva le modifiche allo stato di visualizzazione. (Ereditato da Control) |
IsViewStateEnabled |
Ottiene un valore che indica se lo stato di visualizzazione è attivato per il controllo corrente. (Ereditato da Control) |
LoadViewStateByID |
Ottiene un valore che indica se il controllo prende parte al caricamento del proprio stato di visualizzazione tramite ID anziché tramite l'indice. (Ereditato da Control) |
NamingContainer |
Ottiene un riferimento al contenitore dei nomi del controllo server, che crea uno spazio dei nomi univoco per distinguere i controlli server che hanno lo stesso valore della proprietà ID. (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 della pagina. (Ereditato da Control) |
RenderingCompatibility |
Ottiene un valore che specifica la versione di ASP.NET con cui sarà compatibile il codice HTML di cui è stato eseguito il rendering. (Ereditato da Control) |
Site |
Ottiene informazioni sul contenitore del controllo corrente quando viene eseguito il rendering in un'area di progettazione. (Ereditato da Control) |
SkinID |
Esegue l'override della proprietà base per impedire l'assegnazione di un valore. |
StaticConnections |
Ottiene un insieme di connessioni statiche dichiarate nell'elemento |
TemplateControl |
Ottiene o imposta un riferimento al modello che contiene il controllo. (Ereditato da Control) |
TemplateSourceDirectory |
Ottiene la directory virtuale dell'oggetto Page o dell'oggetto UserControl che contiene il controllo server corrente. (Ereditato da Control) |
UniqueID |
Ottiene l'identificatore univoco qualificato gerarchicamente per il controllo server. (Ereditato da Control) |
ValidateRequestMode |
Ottiene o imposta un valore che indica se il controllo verifica la presenza di valori potenzialmente pericolosi nell'input proveniente dal browser. (Ereditato da Control) |
ViewState |
Ottiene un dizionario di informazioni sullo stato che permette di salvare e ripristinare lo stato di visualizzazione di un controllo server attraverso più richieste per la stessa pagina. (Ereditato da Control) |
ViewStateIgnoresCase |
Ottiene un valore che indica se l'oggetto StateBag non effettua la distinzione tra maiuscole e minuscole. (Ereditato da Control) |
ViewStateMode |
Ottiene o imposta la modalità dello stato, visualizzazione di questo controllo. (Ereditato da Control) |
Visible |
Esegue l'override della proprietà base per impedire l'assegnazione di un valore. |
Metodi
AddedControl(Control, Int32) |
Chiamato dopo che un controllo figlio viene aggiunto alla raccolta 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 ControlCollection del controllo server. (Ereditato da Control) |
ApplyStyleSheetSkin(Page) |
Applica al controllo le proprietà di stile definite nel foglio di stile della pagina. (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 recapita alla proprietà Trace in modo che vengano visualizzate quando è attivata la tracciatura per la pagina. (Ereditato da Control) |
ClearCachedClientID() |
Imposta il valore memorizzato nella cache ClientID 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 proprietà ClientIDMode dell'istanza del controllo corrente e di tutti i controlli figlio su Inherit. (Ereditato da Control) |
CreateChildControls() |
Viene chiamato dal framework della pagina ASP.NET per notificare ai controlli server che usano un'implementazione basata sulla composizione di creare gli eventuali controlli figlio in essi contenuti in preparazione per il postback o il rendering. (Ereditato da Control) |
CreateControlCollection() |
Esegue l'override della proprietà base per impedire che il controllo ProxyWebPartManager contenga controlli. |
DataBind() |
Associa un'origine dati al controllo server richiamato e a tutti i controlli figlio. (Ereditato da Control) |
DataBind(Boolean) |
Associa un'origine dati al controllo server chiamato e ai relativi controlli figlio con un'opzione per generare l'evento DataBinding. (Ereditato da Control) |
DataBindChildren() |
Associa un'origine dati al controllo server e ai relativi controlli figlio. (Ereditato da Control) |
Dispose() |
Abilita un controllo server alla pulizia finale prima che venga rilasciato 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, li crea. (Ereditato da Control) |
EnsureID() |
Crea un identificatore per i controlli a cui non è assegnato alcun identificatore. (Ereditato da Control) |
Equals(Object) |
Determina se l'oggetto specificato è uguale all'oggetto corrente. (Ereditato da Object) |
FindControl(String) |
Cerca un controllo server nel contenitore dei nomi corrente con il parametro |
FindControl(String, Int32) |
Cerca nel contenitore di denominazione corrente un controllo server con il parametro |
Focus() |
Esegue l'override del metodo di base per impedire che il metodo venga chiamato. |
GetDesignModeState() |
Ottiene i dati della fase di progettazione per un controllo. (Ereditato da Control) |
GetHashCode() |
Funge da funzione hash predefinita. (Ereditato da Object) |
GetRouteUrl(Object) |
Ottiene l'URL corrispondente a un set di parametri di route. (Ereditato da Control) |
GetRouteUrl(RouteValueDictionary) |
Ottiene l'URL corrispondente 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 a un nome della route. (Ereditato da Control) |
GetRouteUrl(String, RouteValueDictionary) |
Ottiene l'URL che corrisponde a un set di parametri di route e a un nome della route. (Ereditato da Control) |
GetType() |
Ottiene l'oggetto Type dell'istanza corrente. (Ereditato da Object) |
GetUniqueIDRelativeTo(Control) |
Restituisce la parte con prefisso della proprietà UniqueID 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 eventuali controlli figlio. (Ereditato da Control) |
IsLiteralContent() |
Determina se il controllo server conserva solo il contenuto literal. (Ereditato da Control) |
LoadControlState(Object) |
Ripristina le informazioni sullo stato del controllo da una richiesta di pagina precedente salvata dal metodo SaveControlState(). (Ereditato da Control) |
LoadViewState(Object) |
Ripristina le informazioni sullo stato di visualizzazione da una richiesta di pagina precedente salvata dal metodo SaveViewState(). (Ereditato da Control) |
MapPathSecure(String) |
Recupera il percorso fisico al quale è associato un percorso virtuale, assoluto o relativo. (Ereditato da Control) |
MemberwiseClone() |
Crea una copia superficiale dell'oggetto Object corrente. (Ereditato da Object) |
OnBubbleEvent(Object, EventArgs) |
Determina se l'evento per il controllo server viene passato a un livello superiore nella gerarchia dei controlli server dell'interfaccia utente per la 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 oggetto Stream utilizzato per leggere un file. (Ereditato da Control) |
RaiseBubbleEvent(Object, EventArgs) |
Assegna eventuali origini dell'evento e relative informazioni al controllo padre. (Ereditato da Control) |
RemovedControl(Control) |
Chiamato dopo che un controllo figlio viene rimosso dalla raccolta Controls dell'oggetto Control. (Ereditato da Control) |
Render(HtmlTextWriter) |
Invia il contenuto del controllo server a un oggetto HtmlTextWriter specificato 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 a un oggetto HtmlTextWriter specificato, che scrive il contenuto di cui eseguire il rendering nel client. (Ereditato da Control) |
RenderControl(HtmlTextWriter) |
Restituisce il contenuto del controllo server a un oggetto HtmlTextWriter specificato e archivia le informazioni di traccia relative al controllo se la funzionalità di traccia è abilitata. (Ereditato da Control) |
RenderControl(HtmlTextWriter, ControlAdapter) |
Restituisce il contenuto del controllo server a un oggetto HtmlTextWriter specificato utilizzando un oggetto ControlAdapter specificato. (Ereditato da Control) |
ResolveAdapter() |
Ottiene l'adattatore del 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 formato utilizzabile dal client richiedente. (Ereditato da Control) |
SaveControlState() |
Salva tutte le modifiche dello stato di un controllo server apportate dopo il postback della pagina nel server. (Ereditato da Control) |
SaveViewState() |
Salva eventuali modifiche dello stato di visualizzazione di un controllo server apportate dopo il postback della pagina nel server. (Ereditato da Control) |
SetDesignModeState(IDictionary) |
Imposta i dati della 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) |
Imposta i dati di traccia per la traccia durante la fase di progettazione dei dati di rendering, utilizzando la chiave dei dati di traccia e il valore dei dati di traccia. (Ereditato da Control) |
SetTraceData(Object, Object, Object) |
Imposta i dati di traccia per la traccia durante la fase di progettazione dei dati di rendering, utilizzando l'oggetto tracciato, 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() |
Attiva il rilevamento delle modifiche dello stato di visualizzazione nel controllo server per consentirne la memorizzazione nell'oggetto StateBag del controllo server. È possibile accedere a questo oggetto tramite la proprietà ViewState. (Ereditato da Control) |
Eventi
DataBinding |
Viene generato quando il controllo server viene associato a un'origine dati. (Ereditato da Control) |
Disposed |
Si verifica quando un controllo server viene rilasciato dalla memoria, ossia nell'ultima fase della durata di un controllo server quando viene richiesta una pagina ASP.NET. (Ereditato da Control) |
Init |
Viene generato quando il controllo server viene inizializzato, ovvero nella prima fase della sua durata. (Ereditato da Control) |
Load |
Viene generato quando il controllo server è caricato nell'oggetto Page. (Ereditato da Control) |
PreRender |
Si verifica dopo il caricamento dell'oggetto Control ma prima del rendering. (Ereditato da Control) |
Unload |
Viene generato quando il controllo server viene scaricato dalla memoria. (Ereditato da Control) |
Implementazioni dell'interfaccia esplicita
Metodi di estensione
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 metatabella per il controllo contenitore dei dati. |