ProxyWebPartManager Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Fornece uma maneira para os desenvolvedores declararem conexões estáticas em uma página de conteúdo quando um WebPartManager controle tiver sido declarado na página mestra associada da página de conteúdo.
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
- Herança
- Atributos
Exemplos
O exemplo de código a seguir demonstra como usar a ProxyWebPartManager classe para declarar conexões estáticas em páginas de conteúdo em um aplicativo que usa páginas mestras. O exemplo tem cinco partes:
Um controle de usuário que permite alterar o modo de exibição de Web Parts em uma página.
Código-fonte para uma interface e dois WebPart controles que atuam como o provedor e o consumidor de uma conexão.
Uma página da Web mestra que hospeda o controle do usuário, as páginas de conteúdo e o WebPartManager controle do aplicativo.
Uma página da Web de conteúdo que hospeda um ProxyWebPartManager controle, os dois controles personalizados WebPart e uma conexão estática para conectar os dois controles.
Uma explicação de como executar a página de exemplo.
A primeira parte desse exemplo de código é o controle de usuário que permite que os usuários alterem os modos de exibição em uma página da Web. Salve o código-fonte a seguir em um arquivo .ascx, dando-lhe o nome do arquivo atribuído ao Src atributo da Register diretiva para esse controle de usuário, que está próximo à parte superior da página mestra de hospedagem. Para obter detalhes sobre os modos de exibição e uma descrição do código-fonte nesse controle, consulte Passo a passo: alterando os modos de exibição em uma página de Web Parts.
<%@ 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>
A segunda parte do exemplo de código é o código-fonte para a interface e os controles. O arquivo de origem contém uma interface simples chamada IZipCode. Há também uma WebPart classe nomeada ZipCodeWebPart que implementa a interface e atua como o controle do provedor. Seu ProvideIZipCode método é o método de retorno de chamada que implementa o único membro da interface. O método simplesmente retorna uma instância da interface. Observe que o método é marcado com um ConnectionProvider atributo em seus metadados. Esse é o mecanismo para identificar o método como o método de retorno de chamada para o ponto de conexão do provedor. A outra WebPart classe é nomeada WeatherWebParte atua como consumidor da conexão. Essa classe tem um método chamado GetZipCode que obtém uma instância da IZipCode interface do controle do provedor. Observe que esse método é marcado como o método de ponto de conexão do consumidor com um ConnectionConsumer atributo em seus metadados.
Para que o exemplo de código seja executado, você deve compilar esse código-fonte. Você pode compilá-lo explicitamente e colocar o assembly resultante na pasta Bin do site ou no cache de assembly global. Como alternativa, você pode colocar o código-fonte na pasta App_Code do site, na qual ele será compilado dinamicamente em tempo de execução. Este exemplo de código usa compilação dinâmica. Para obter um passo a passo que demonstra como compilar, consulte Passo a passo : Desenvolvendo e usando um controle de servidor Web personalizado.
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
A terceira parte do exemplo de código é a página mestra. Você deve pegar o código-fonte a seguir e salvá-lo em um arquivo, nomeando-o masterPageCS.master ou MasterPageVB.master (dependendo de qual idioma você usa). Observe que a página mestra contém uma Register diretiva para registrar o controle de usuário e faz referência ao próprio controle do usuário no corpo da página. A página mestra também declara o único <asp:webpartmanager> elemento usado para esta página e todas as páginas de conteúdo relacionadas. Por fim, a página mestra tem um <asp: contentplaceholder> elemento que declara o ponto na página em que a página de conteúdo é inserida.
<%@ 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>
A quarta parte do exemplo de código é a página de conteúdo. Você deve copiar o código-fonte a seguir e salvá-lo em um arquivo com uma extensão .aspx. Observe que sua Page diretiva contém um MasterFile atributo para se referir à página mestra. Além disso, esta página tem uma Register diretiva para registrar o arquivo na pasta App_Code que contém os controles personalizados WebPart compilados dinamicamente que participam da conexão. Dentro das <asp:content> marcas da página, há um <asp:proxywebpartmanager> elemento, com um elemento filho <staticconnections> , que, por sua vez, tem um elemento filho <asp:webpartconnection> para declarar os detalhes da conexão. Dentro das <script> marcas na página, o Button1_Click método adiciona algum código que acessa o controle principal WebPartManager na página mestra e o ProxyWebPartManager controle na página de conteúdo e grava alguns de seus detalhes na página.
<%@ 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>
Depois de carregar a página em um navegador, clique no botão Informações do WebPartManager e observe as informações sobre o WebPartManager controle na página mestra e o ProxyWebPartManager controle na página de conteúdo. Por exemplo, observe que ambos têm a mesma contagem em suas respectivas propriedades que rastreiam conexões estáticas (a StaticConnections propriedade). Observe também que, embora o WebPartManager controle tenha uma WebParts propriedade que rastreia o número de WebPart controles que gerencia, o ProxyWebPartManager controle não tem essa propriedade, pois sua única finalidade é conter conexões estáticas.
Comentários
O ProxyWebPartManager controle existe para o cenário específico de declaração de conexões estáticas em páginas de conteúdo quando um WebPartManager controle já foi declarado em uma página mestra.
Por design, uma página da Web que usa controles de Web Parts deve conter um (e apenas um) WebPartManager controle que gerencia todos os controles de Web Parts na página. Quando um aplicativo de Web Parts usa páginas mestras, é comum colocar o WebPartManager controle na página mestra, pois todas as páginas de conteúdo são mescladas com a página mestra em tempo de execução e o controle único WebPartManager gerenciará todos os controles de Web Parts de todas as páginas de conteúdo. No entanto, quando os desenvolvedores desejam declarar conexões estáticas nas páginas de conteúdo de tal aplicativo, eles podem parecer enfrentar uma limitação. Uma conexão de Web Parts estática só pode ser declarada adicionando um <asp:webpartconnection> elemento como um filho de um <staticconnections> elemento, que deve ser filho de um <asp:webpartmanager> elemento. Mas como o WebPartManager controle já foi declarado na página mestra e é o controle permitido WebPartManager , os desenvolvedores não podem declarar controles adicionais WebPartManager nas páginas de conteúdo para adicionar conexões estáticas.
O ProxyWebPartManager controle assume o lugar do WebPartManager controle neste cenário. Os desenvolvedores declaram um <asp:proxywebpartmanager> elemento em vez de um <asp:webpartmanager> elemento em suas páginas de conteúdo e podem declarar conexões estáticas como elementos filho. Em tempo de execução, as conexões no ProxyWebPartManager controle são simplesmente adicionadas à StaticConnections coleção do WebPartManager controle e tratadas como qualquer outra conexão.
Como o ProxyWebPartManager controle é usado apenas neste cenário de desenvolvimento específico, ele tem uma funcionalidade mais limitada do que a WebPartManager classe. Na verdade, embora o ProxyWebPartManager controle atue como um proxy para conter conexões estáticas para o WebPartManager controle em páginas de conteúdo, ele não herda do WebPartManager controle. Ele herda diretamente da Control classe e substitui apenas alguns dos membros base. As EnableThemingpropriedades e SkinID as Visiblepropriedades são substituídas e atribuídas que os impedem de serem usados. Outras propriedades herdadas são substituídas para ajustar seu comportamento de tempo de design, mas, caso contrário, elas têm o mesmo comportamento que as propriedades base. Elas incluem as propriedades e ClientID as Controls propriedades. Por fim, a ProxyWebPartManager classe tem uma propriedade não herdada. A StaticConnections propriedade retorna sua própria coleção de conexões estáticas (um ProxyWebPartConnectionCollection objeto).
Quanto aos métodos, a ProxyWebPartManager classe substitui de forma semelhante apenas alguns métodos, principalmente para restringir seu uso. O método herdado Focus torna-se inutilizável lançando uma exceção se chamado. O CreateControlCollection método sempre retorna uma coleção de controles vazia, que tem o efeito de impedi-la de conter uma coleção de controles. Por fim, o OnInit método chama o método base e atribui a coleção de conexões referenciadas pela StaticConnections propriedade à WebPartManager.StaticConnections propriedade do WebPartManager controle. Isso tem o efeito de implantar todas as conexões estáticas declaradas em todas as páginas de conteúdo e torná-las parte da coleção de conexões mantida pelo WebPartManager controle na página mestra.
Construtores
| Nome | Description |
|---|---|
| ProxyWebPartManager() |
Inicializa uma nova instância da classe ProxyWebPartManager. |
Propriedades
| Nome | Description |
|---|---|
| Adapter |
Obtém o adaptador específico do navegador para o controle. (Herdado de Control) |
| AppRelativeTemplateSourceDirectory |
Obtém ou define o diretório virtual relativo ao aplicativo do Page objeto ou UserControl que contém esse controle. (Herdado de Control) |
| BindingContainer |
Obtém o controle que contém a associação de dados desse controle. (Herdado de Control) |
| ChildControlsCreated |
Obtém um valor que indica se os controles filho do controle do servidor foram criados. (Herdado de Control) |
| ClientID |
Obtém a ID de controle para marcação HTML gerada por ASP.NET. |
| ClientIDMode |
Obtém ou define o algoritmo usado para gerar o valor da ClientID propriedade. (Herdado de Control) |
| ClientIDSeparator |
Obtém um valor de caractere que representa o caractere separador usado na ClientID propriedade. (Herdado de Control) |
| Context |
Obtém o HttpContext objeto associado ao controle do servidor para a solicitação da Web atual. (Herdado de Control) |
| Controls |
Obtém um ControlCollection objeto que representa os controles filho para um controle de servidor especificado na hierarquia da interface do usuário. |
| DataItemContainer |
Obtém uma referência ao contêiner de nomenclatura se o contêiner de nomenclatura implementar IDataItemContainer. (Herdado de Control) |
| DataKeysContainer |
Obtém uma referência ao contêiner de nomenclatura se o contêiner de nomenclatura implementar IDataKeysControl. (Herdado de Control) |
| DesignMode |
Obtém um valor que indica se um controle está sendo usado em uma superfície de design. (Herdado de Control) |
| EnableTheming |
Substitui a propriedade base para impedir que temas sejam usados. |
| EnableViewState |
Obtém ou define um valor que indica se o controle do servidor persiste seu estado de exibição e o estado de exibição de todos os controles filho que ele contém, para o cliente solicitante. (Herdado de Control) |
| Events |
Obtém uma lista de representantes do manipulador de eventos para o controle. Esta propriedade é somente para leitura. (Herdado de Control) |
| HasChildViewState |
Obtém um valor que indica se os controles filho do controle do servidor atual têm configurações de estado de exibição salvas. (Herdado de Control) |
| ID |
Obtém ou define o identificador programático atribuído ao controle do servidor. (Herdado de Control) |
| IdSeparator |
Obtém o caractere usado para separar identificadores de controle. (Herdado de Control) |
| IsChildControlStateCleared |
Obtém um valor que indica se os controles contidos nesse controle têm estado de controle. (Herdado de Control) |
| IsTrackingViewState |
Obtém um valor que indica se o controle do servidor está salvando alterações em seu estado de exibição. (Herdado de Control) |
| IsViewStateEnabled |
Obtém um valor que indica se o estado de exibição está habilitado para esse controle. (Herdado de Control) |
| LoadViewStateByID |
Obtém um valor que indica se o controle participa no carregamento de seu estado de exibição ID em vez de índice. (Herdado de Control) |
| NamingContainer |
Obtém uma referência ao contêiner de nomenclatura do controle de servidor, que cria um namespace exclusivo para diferenciar entre controles de servidor com o mesmo ID valor de propriedade. (Herdado de Control) |
| Page |
Obtém uma referência à Page instância que contém o controle do servidor. (Herdado de Control) |
| Parent |
Obtém uma referência ao controle pai do controle do servidor na hierarquia de controle de página. (Herdado de Control) |
| RenderingCompatibility |
Obtém um valor que especifica a versão ASP.NET com a qual o HTML renderizado será compatível. (Herdado de Control) |
| Site |
Obtém informações sobre o contêiner que hospeda o controle atual quando renderizado em uma superfície de design. (Herdado de Control) |
| SkinID |
Substitui a propriedade base para impedir que um valor seja atribuído. |
| StaticConnections |
Obtém uma coleção de conexões estáticas declaradas dentro do |
| TemplateControl |
Obtém ou define uma referência ao modelo que contém esse controle. (Herdado de Control) |
| TemplateSourceDirectory |
Obtém o diretório virtual do Page ou UserControl que contém o controle de servidor atual. (Herdado de Control) |
| UniqueID |
Obtém o identificador exclusivo e hierarquicamente qualificado para o controle do servidor. (Herdado de Control) |
| ValidateRequestMode |
Obtém ou define um valor que indica se o controle verifica a entrada do cliente do navegador em busca de valores potencialmente perigosos. (Herdado de Control) |
| ViewState |
Obtém um dicionário de informações de estado que permite salvar e restaurar o estado de exibição de um controle de servidor em várias solicitações para a mesma página. (Herdado de Control) |
| ViewStateIgnoresCase |
Obtém um valor que indica se o StateBag objeto não diferencia maiúsculas de minúsculas. (Herdado de Control) |
| ViewStateMode |
Obtém ou define o modo de estado de exibição desse controle. (Herdado de Control) |
| Visible |
Substitui a propriedade base para impedir que um valor seja atribuído. |
Métodos
| Nome | Description |
|---|---|
| AddedControl(Control, Int32) |
Chamado depois que um controle filho é adicionado à Controls coleção do Control objeto. (Herdado de Control) |
| AddParsedSubObject(Object) |
Notifica o controle do servidor de que um elemento, XML ou HTML, foi analisado e adiciona o elemento ao objeto do controle do ControlCollection servidor. (Herdado de Control) |
| ApplyStyleSheetSkin(Page) |
Aplica as propriedades de estilo definidas na folha de estilos de página ao controle. (Herdado de Control) |
| BeginRenderTracing(TextWriter, Object) |
Inicia o rastreamento em tempo de design dos dados de renderização. (Herdado de Control) |
| BuildProfileTree(String, Boolean) |
Coleta informações sobre o controle do servidor e o Trace entrega na propriedade a ser exibida quando o rastreamento está habilitado para a página. (Herdado de Control) |
| ClearCachedClientID() |
Define o valor armazenado em ClientID cache como |
| ClearChildControlState() |
Exclui as informações de estado de controle para os controles filho do controle do servidor. (Herdado de Control) |
| ClearChildState() |
Exclui as informações de estado de exibição e de estado de controle para todos os controles filho do controle do servidor. (Herdado de Control) |
| ClearChildViewState() |
Exclui as informações de estado de exibição para todos os controles filho do controle do servidor. (Herdado de Control) |
| ClearEffectiveClientIDMode() |
Define a ClientIDMode propriedade da instância de controle atual e de qualquer controle filho como Inherit. (Herdado de Control) |
| CreateChildControls() |
Chamado pela estrutura de página ASP.NET para notificar os controles de servidor que usam a implementação baseada em composição para criar quaisquer controles filho que eles contenham em preparação para postar de volta ou renderização. (Herdado de Control) |
| CreateControlCollection() |
Substitui a propriedade base para impedir que o ProxyWebPartManager controle contenha controles. |
| DataBind() |
Associa uma fonte de dados ao controle de servidor invocado e a todos os seus controles filho. (Herdado de Control) |
| DataBind(Boolean) |
Associa uma fonte de dados ao controle de servidor invocado e a todos os seus controles filho com uma opção para gerar o DataBinding evento. (Herdado de Control) |
| DataBindChildren() |
Associa uma fonte de dados aos controles filho do controle do servidor. (Herdado de Control) |
| Dispose() |
Permite que um controle de servidor execute a limpeza final antes de ser liberado da memória. (Herdado de Control) |
| EndRenderTracing(TextWriter, Object) |
Encerra o rastreamento em tempo de design dos dados de renderização. (Herdado de Control) |
| EnsureChildControls() |
Determina se o controle do servidor contém controles filho. Se isso não acontecer, ele criará controles filho. (Herdado de Control) |
| EnsureID() |
Cria um identificador para controles que não têm um identificador atribuído. (Herdado de Control) |
| Equals(Object) |
Determina se o objeto especificado é igual ao objeto atual. (Herdado de Object) |
| FindControl(String, Int32) |
Pesquisa o contêiner de nomenclatura atual para um controle de servidor com o especificado |
| FindControl(String) |
Pesquisa o contêiner de nomenclatura atual para um controle de servidor com o parâmetro especificado |
| Focus() |
Substitui o método base para impedir que o método seja chamado. |
| GetDesignModeState() |
Obtém dados de tempo de design para um controle. (Herdado de Control) |
| GetHashCode() |
Serve como a função de hash padrão. (Herdado de Object) |
| GetRouteUrl(Object) |
Obtém a URL que corresponde a um conjunto de parâmetros de rota. (Herdado de Control) |
| GetRouteUrl(RouteValueDictionary) |
Obtém a URL que corresponde a um conjunto de parâmetros de rota. (Herdado de Control) |
| GetRouteUrl(String, Object) |
Obtém a URL que corresponde a um conjunto de parâmetros de rota e um nome de rota. (Herdado de Control) |
| GetRouteUrl(String, RouteValueDictionary) |
Obtém a URL que corresponde a um conjunto de parâmetros de rota e um nome de rota. (Herdado de Control) |
| GetType() |
Obtém o Type da instância atual. (Herdado de Object) |
| GetUniqueIDRelativeTo(Control) |
Retorna a parte prefixada da UniqueID propriedade do controle especificado. (Herdado de Control) |
| HasControls() |
Determina se o controle do servidor contém controles filho. (Herdado de Control) |
| HasEvents() |
Retorna um valor que indica se os eventos são registrados para o controle ou quaisquer controles filho. (Herdado de Control) |
| IsLiteralContent() |
Determina se o controle do servidor contém apenas conteúdo literal. (Herdado de Control) |
| LoadControlState(Object) |
Restaura informações de estado de controle de uma solicitação de página anterior que foi salva pelo SaveControlState() método. (Herdado de Control) |
| LoadViewState(Object) |
Restaura informações de estado de exibição de uma solicitação de página anterior que foi salva pelo SaveViewState() método. (Herdado de Control) |
| MapPathSecure(String) |
Recupera o caminho físico para o qual um caminho virtual, absoluto ou relativo, é mapeado. (Herdado de Control) |
| MemberwiseClone() |
Cria uma cópia superficial do Objectatual. (Herdado de Object) |
| OnBubbleEvent(Object, EventArgs) |
Determina se o evento para o controle do servidor é passado para a hierarquia de controle do servidor de interface do usuário da página. (Herdado de Control) |
| OnDataBinding(EventArgs) |
Aciona o evento DataBinding. (Herdado de Control) |
| OnInit(EventArgs) |
Aciona o Init evento e inicializa o controle. |
| OnLoad(EventArgs) |
Aciona o evento Load. (Herdado de Control) |
| OnPreRender(EventArgs) |
Aciona o evento PreRender. (Herdado de Control) |
| OnUnload(EventArgs) |
Aciona o evento Unload. (Herdado de Control) |
| OpenFile(String) |
Obtém um Stream usado para ler um arquivo. (Herdado de Control) |
| RaiseBubbleEvent(Object, EventArgs) |
Atribui todas as fontes do evento e suas informações ao pai do controle. (Herdado de Control) |
| RemovedControl(Control) |
Chamado depois que um controle filho é removido da Controls coleção do Control objeto. (Herdado de Control) |
| Render(HtmlTextWriter) |
Envia o conteúdo do controle do servidor para um objeto fornecido HtmlTextWriter , que grava o conteúdo a ser renderizado no cliente. (Herdado de Control) |
| RenderChildren(HtmlTextWriter) |
Gera o conteúdo dos filhos de um controle de servidor para um objeto fornecido HtmlTextWriter , que grava o conteúdo a ser renderizado no cliente. (Herdado de Control) |
| RenderControl(HtmlTextWriter, ControlAdapter) |
Gera conteúdo de controle de servidor para um objeto fornecido HtmlTextWriter usando um objeto fornecido ControlAdapter . (Herdado de Control) |
| RenderControl(HtmlTextWriter) |
O servidor de saída controla o conteúdo de um objeto fornecido HtmlTextWriter e armazena informações de rastreamento sobre o controle se o rastreamento estiver habilitado. (Herdado de Control) |
| ResolveAdapter() |
Obtém o adaptador de controle responsável por renderizar o controle especificado. (Herdado de Control) |
| ResolveClientUrl(String) |
Obtém uma URL que pode ser usada pelo navegador. (Herdado de Control) |
| ResolveUrl(String) |
Converte uma URL em uma que é utilizável no cliente solicitante. (Herdado de Control) |
| SaveControlState() |
Salva as alterações de estado do controle do servidor que ocorreram desde o momento em que a página foi postada de volta no servidor. (Herdado de Control) |
| SaveViewState() |
Salva as alterações de estado de exibição de controle do servidor que ocorreram desde o momento em que a página foi postada novamente no servidor. (Herdado de Control) |
| SetDesignModeState(IDictionary) |
Define dados de tempo de design para um controle. (Herdado de Control) |
| SetRenderMethodDelegate(RenderMethod) |
Atribui um representante do manipulador de eventos para renderizar o controle do servidor e seu conteúdo em seu controle pai. (Herdado de Control) |
| SetTraceData(Object, Object, Object) |
Define dados de rastreamento para rastreamento em tempo de design de dados de renderização, usando o objeto rastreado, a chave de dados de rastreamento e o valor dos dados de rastreamento. (Herdado de Control) |
| SetTraceData(Object, Object) |
Define dados de rastreamento para rastreamento em tempo de design de dados de renderização, usando a chave de dados de rastreamento e o valor dos dados de rastreamento. (Herdado de Control) |
| ToString() |
Retorna uma cadeia de caracteres que representa o objeto atual. (Herdado de Object) |
| TrackViewState() |
Causa o acompanhamento de alterações de estado de exibição no controle do servidor para que possam ser armazenadas no objeto do controle do StateBag servidor. Esse objeto é acessível por meio da ViewState propriedade. (Herdado de Control) |
Eventos
| Nome | Description |
|---|---|
| DataBinding |
Ocorre quando o controle do servidor é associado a uma fonte de dados. (Herdado de Control) |
| Disposed |
Ocorre quando um controle de servidor é liberado da memória, que é o último estágio do ciclo de vida do controle do servidor quando uma página ASP.NET é solicitada. (Herdado de Control) |
| Init |
Ocorre quando o controle do servidor é inicializado, que é a primeira etapa em seu ciclo de vida. (Herdado de Control) |
| Load |
Ocorre quando o controle do servidor é carregado no Page objeto. (Herdado de Control) |
| PreRender |
Ocorre depois que o Control objeto é carregado, mas antes da renderização. (Herdado de Control) |
| Unload |
Ocorre quando o controle do servidor é descarregado da memória. (Herdado de Control) |
Implantações explícitas de interface
| Nome | Description |
|---|---|
| IControlBuilderAccessor.ControlBuilder |
Para obter uma descrição deste membro, consulte ControlBuilder. (Herdado de Control) |
| IControlDesignerAccessor.GetDesignModeState() |
Para obter uma descrição deste membro, consulte GetDesignModeState(). (Herdado de Control) |
| IControlDesignerAccessor.SetDesignModeState(IDictionary) |
Para obter uma descrição deste membro, consulte SetDesignModeState(IDictionary). (Herdado de Control) |
| IControlDesignerAccessor.SetOwnerControl(Control) |
Para obter uma descrição deste membro, consulte SetOwnerControl(Control). (Herdado de Control) |
| IControlDesignerAccessor.UserData |
Para obter uma descrição deste membro, consulte UserData. (Herdado de Control) |
| IDataBindingsAccessor.DataBindings |
Para obter uma descrição deste membro, consulte DataBindings. (Herdado de Control) |
| IDataBindingsAccessor.HasDataBindings |
Para obter uma descrição deste membro, consulte HasDataBindings. (Herdado de Control) |
| IExpressionsAccessor.Expressions |
Para obter uma descrição deste membro, consulte Expressions. (Herdado de Control) |
| IExpressionsAccessor.HasExpressions |
Para obter uma descrição deste membro, consulte HasExpressions. (Herdado de Control) |
| IParserAccessor.AddParsedSubObject(Object) |
Para obter uma descrição deste membro, consulte AddParsedSubObject(Object). (Herdado de Control) |
Métodos de Extensão
| Nome | Description |
|---|---|
| FindDataSourceControl(Control) |
Retorna a fonte de dados associada ao controle de dados para o controle especificado. |
| FindFieldTemplate(Control, String) |
Retorna o modelo de campo para a coluna especificada no contêiner de nomenclatura do controle especificado. |
| FindMetaTable(Control) |
Retorna o objeto metatável para o controle de dados que contém. |