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 após um controle WebPartManager ser declarado na página mestra associada à 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 de 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 a ele o nome do arquivo atribuído ao Src
atributo da Register
diretiva para esse controle de usuário, que fica próximo à parte superior da página mestra de hospedagem. Para obter detalhes sobre modos de exibição e uma descrição do código-fonte nesse controle, consulte Passo a passo: alterando 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
. Também há uma WebPart classe chamada 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 é denominada WeatherWebPart
e 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 de 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 como MasterPageCS.master ou MasterPageVB.master (dependendo da linguagem usada). 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 de 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, essa 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 desse 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 um 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 nesse 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 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 . Ela herda diretamente da Control classe e substitui apenas alguns dos membros base. As EnableThemingpropriedades , Visiblee SkinID são substituídas e atribuídas valores que as impedem de serem usadas. 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 Controls propriedades e ClientID . 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, em seguida, atribui a coleção de conexões referenciadas pela StaticConnections propriedade à WebPartManager.StaticConnections propriedade do WebPartManager controle . Isso tem o efeito de distribuir 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
ProxyWebPartManager() |
Inicializa uma nova instância da classe ProxyWebPartManager. |
Propriedades
Adapter |
Obtém o adaptador específico de navegador para o controle. (Herdado de Control) |
AppRelativeTemplateSourceDirectory |
Obtém ou define o diretório virtual relativo de aplicativo do objeto Page ou UserControl que contém este controle. (Herdado de Control) |
BindingContainer |
Obtém o controle que contém a vinculação de dados desse controle. (Herdado de Control) |
ChildControlsCreated |
Obtém um valor que indica se os controles filho do controle de servidor foram criados. (Herdado de Control) |
ClientID |
Obtém a ID de controle de marcação HTML gerada pelo ASP.NET. |
ClientIDMode |
Obtém ou define o algoritmo usado para gerar o valor da propriedade ClientID. (Herdado de Control) |
ClientIDSeparator |
Obtém um valor de caractere que representa o caractere separador usado na propriedade ClientID. (Herdado de Control) |
Context |
Obtém o objeto HttpContext associado ao controle de servidor para a solicitação da Web atual. (Herdado de Control) |
Controls |
Obtém um objeto ControlCollection que representa os controles filho para um controle de servidor especificado na hierarquia de interface do usuário. |
DataItemContainer |
Obtém uma referência ao contêiner de nomenclatura se o contêiner de nomenclatura implementa o IDataItemContainer. (Herdado de Control) |
DataKeysContainer |
Obtém uma referência ao contêiner de nomenclatura se o contêiner de nomenclatura implementa o 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 o uso de temas. |
EnableViewState |
Obtém ou define um valor que indica se o controle de servidor persiste seu estado de exibição e o estado de exibição de quaisquer controles filho que ele contém, para o cliente solicitante. (Herdado de Control) |
Events |
Obtém uma lista de delegados de 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 de servidor atual têm alguma configuração de estado de exibição salva. (Herdado de Control) |
ID |
Obtém ou define o identificador programático atribuído ao controle de 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 dentro deste controle têm estado de controle. (Herdado de Control) |
IsTrackingViewState |
Obtém um valor que indica se o controle de servidor está salvando alterações no 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 do carregamento do estado de exibição por ID em vez do índice. (Herdado de Control) |
NamingContainer |
Obtém uma referência ao contêiner de nomenclatura do controle do servidor, que cria um namespace exclusivo para diferenciar entre os controles de servidor com o mesmo valor da propriedade ID. (Herdado de Control) |
Page |
Obtém uma referência para a instância Page que contém o controle de servidor. (Herdado de Control) |
Parent |
Obtém uma referência ao controle pai do controle de servidor na hierarquia de controle da página. (Herdado de Control) |
RenderingCompatibility |
Obtém um valor que especifica a versão do 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 renderizados 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 declarada dentro do elemento |
TemplateControl |
Obtém ou define uma referência ao modelo que contém este controle. (Herdado de Control) |
TemplateSourceDirectory |
Obtém o diretório virtual do Page ou UserControl que contém o controle do servidor atual. (Herdado de Control) |
UniqueID |
Obtém o identificador exclusivo, qualificado segundo a hierarquia, para o controle de servidor. (Herdado de Control) |
ValidateRequestMode |
Obtém ou define um valor que indica se o controle verifica a entrada do cliente do navegador para 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 objeto StateBag não diferencia maiúsculas de minúsculas. (Herdado de Control) |
ViewStateMode |
Obtém ou define o modo de estado de exibição deste controle. (Herdado de Control) |
Visible |
Substitui a propriedade base para impedir que um valor seja atribuído. |
Métodos
AddedControl(Control, Int32) |
Chamado após um controle filho ser adicionado à coleção Controls do objeto Control. (Herdado de Control) |
AddParsedSubObject(Object) |
Notifica o controle de servidor de que um elemento, XML ou HTML, foi analisado e adiciona o elemento ao objeto ControlCollection do controle de servidor. (Herdado de Control) |
ApplyStyleSheetSkin(Page) |
Aplica as propriedades de estilo definidas na folha de estilos da página ao controle. (Herdado de Control) |
BeginRenderTracing(TextWriter, Object) |
Inicia o rastreamento de tempo de design de dados de renderização. (Herdado de Control) |
BuildProfileTree(String, Boolean) |
Reúne informações sobre o controle de servidor e as envia para a propriedade Trace para serem exibidas quando o rastreamento está habilitado para a página. (Herdado de Control) |
ClearCachedClientID() |
Define o valor ClientID armazenado em cache como |
ClearChildControlState() |
Exclui as informações de estado de controle para os controles filho do controle de 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 de servidor. (Herdado de Control) |
ClearChildViewState() |
Exclui as informações de estado de exibição para todos os controles filho do controle de servidor. (Herdado de Control) |
ClearEffectiveClientIDMode() |
Define a propriedade ClientIDMode da instância de controle atual e de quaisquer controles filho para Inherit. (Herdado de Control) |
CreateChildControls() |
Chamado pela estrutura de página do ASP.NET para notificar os controles do servidor que usam a implementação baseada em composição para criar os controles filho para preparar-se para um postback ou renderização. (Herdado de Control) |
CreateControlCollection() |
Substitui a propriedade base para impedir que o controle ProxyWebPartManager contenha controles. |
DataBind() |
Associa uma fonte de dados ao controle de servidor chamado e a todos os seus controles filho. (Herdado de Control) |
DataBind(Boolean) |
Associa uma fonte de dados ao controle de servidor invocado e todos os seus controles filho com uma opção para gerar o evento DataBinding. (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 do lançamento da memória. (Herdado de Control) |
EndRenderTracing(TextWriter, Object) |
Encerra o rastreamento de tempo de design de dados de renderização. (Herdado de Control) |
EnsureChildControls() |
Determinará se o controle de servidor contiver controles filho. Se ele não contiver, 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) |
Procura o atual contêiner de nomenclatura de um controle de servidor com o parâmetro |
FindControl(String, Int32) |
Procura o contêiner de nomenclatura atual para um controle de servidor com o |
Focus() |
Substitui o método base para impedir que o método seja chamado. |
GetDesignModeState() |
Obtém os 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 propriedade UniqueID do controle especificado. (Herdado de Control) |
HasControls() |
Determina se o controle de servidor contém algum controle filho. (Herdado de Control) |
HasEvents() |
Retorna um valor que indica se os eventos são registrados para o controle ou qualquer controle filho. (Herdado de Control) |
IsLiteralContent() |
Determina se o controle de servidor contém apenas o 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 método SaveControlState(). (Herdado de Control) |
LoadViewState(Object) |
Restaura informações de estado de exibição de uma solicitação de página anterior salva pelo método SaveViewState(). (Herdado de Control) |
MapPathSecure(String) |
Recupera o caminho físico para o qual um caminho virtual é mapeado, relativo ou virtual. (Herdado de Control) |
MemberwiseClone() |
Cria uma cópia superficial do Object atual. (Herdado de Object) |
OnBubbleEvent(Object, EventArgs) |
Determina se o evento do controle de servidor é passado um nível acima da hierarquia de controle de servidor da interface do usuário da página. (Herdado de Control) |
OnDataBinding(EventArgs) |
Aciona o evento DataBinding. (Herdado de Control) |
OnInit(EventArgs) |
Aciona o evento Init 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 quaisquer fontes de evento e suas informações para o pai do controle. (Herdado de Control) |
RemovedControl(Control) |
Chamado após um controle filho ser removido da coleção Controls do objeto Control. (Herdado de Control) |
Render(HtmlTextWriter) |
Envia o conteúdo do controle de servidor a um objeto HtmlTextWriter fornecido, 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 HtmlTextWriter fornecido, que grava o conteúdo a ser renderizado no cliente. (Herdado de Control) |
RenderControl(HtmlTextWriter) |
Gera o conteúdo do controle de servidor para um objeto HtmlTextWriter fornecido e armazena informações de rastreamento sobre o controle caso o rastreamento esteja habilitado. (Herdado de Control) |
RenderControl(HtmlTextWriter, ControlAdapter) |
Gera o conteúdo do controle de servidor a um objeto HtmlTextWriter fornecido usando um objeto ControlAdapter fornecido. (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 possa ser usada no cliente solicitante. (Herdado de Control) |
SaveControlState() |
Salva as alterações de estado do controle de servidor que ocorreram desde a hora em que ocorreu o postback da página no servidor. (Herdado de Control) |
SaveViewState() |
Salva alterações de estado de exibição do controle de servidor que ocorreram desde a hora em que ocorreu o postback da página no servidor. (Herdado de Control) |
SetDesignModeState(IDictionary) |
Define os dados de tempo de design para um controle. (Herdado de Control) |
SetRenderMethodDelegate(RenderMethod) |
Atribui um delegado do manipulador de eventos para renderizar o controle de servidor e seu conteúdo em seu controle pai. (Herdado de Control) |
SetTraceData(Object, Object) |
Define os dados de rastreamento para o rastreamento de tempo de design dos dados de renderização, usando a chave e o valor de dados de rastreamento. (Herdado de Control) |
SetTraceData(Object, Object, Object) |
Define os dados de rastreamento para o rastreamento de tempo de design dos dados de renderização, usando o objeto rastreado, a chave e o valor de dados de rastreamento. (Herdado de Control) |
ToString() |
Retorna uma cadeia de caracteres que representa o objeto atual. (Herdado de Object) |
TrackViewState() |
Causa o acompanhamento das alterações de estado de exibição para o controle de servidor, para que elas possam ser armazenadas no objeto StateBag do controle de servidor. Esse objeto é acessível por meio da propriedade ViewState. (Herdado de Control) |
Eventos
DataBinding |
Ocorre quando o controle de 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 de controle de servidor quando uma página ASP.NET é solicitada. (Herdado de Control) |
Init |
Ocorre quando o controle de servidor é inicializado, que é a primeira etapa do ciclo de vida. (Herdado de Control) |
Load |
Ocorre quando o controle de servidor é carregado no objeto Page. (Herdado de Control) |
PreRender |
Ocorre depois que o objeto Control é carregado, mas antes da renderização. (Herdado de Control) |
Unload |
Ocorre quando o controle de servidor é descarregado da memória. (Herdado de Control) |
Implantações explícitas de interface
Métodos de Extensão
FindDataSourceControl(Control) |
Retorna a fonte de dados associada ao controle de dados do controle especificado. |
FindFieldTemplate(Control, String) |
Retorna o modelo do campo para a coluna especificada no contêiner de nomenclatura do controle especificado. |
FindMetaTable(Control) |
Retorna o objeto metatable para o controle que contém dados. |