ProxyWebPartManager Classe
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Fornece uma forma para os programadores declararem ligações estáticas numa página de conteúdo quando um WebPartManager controlo foi 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 seguinte demonstra como usar a ProxyWebPartManager classe para declarar ligações estáticas em páginas de conteúdo numa aplicação que utiliza páginas mestres. O exemplo tem cinco partes:
Um controlo de utilizador que permite alterar o modo de exibição das Web Parts numa página.
Código-fonte para uma interface e dois WebPart controlos que atuam como fornecedor e consumidor para uma ligação.
Uma página web mestre que aloja o controlo do utilizador, as páginas de conteúdo e o WebPartManager controlo da aplicação.
Uma página Web de conteúdo que aloja um ProxyWebPartManager controlo, os dois controlos personalizados WebPart e uma ligação estática para ligar os dois controlos.
Uma explicação de como executar a página de exemplo.
A primeira parte deste exemplo de código é o controlo do utilizador que permite aos utilizadores alterar modos de visualização numa página Web. Guarde o seguinte código-fonte num ficheiro .ascx, atribuindo-lhe o nome do ficheiro atribuído ao Src atributo da Register diretiva para este controlo de utilizador, que está perto do topo da página mestre de alojamento. Para detalhes sobre modos de visualização e uma descrição do código-fonte neste controlo, consulte Walkthrough: Changing Display Modes on a Web Parts Page.
<%@ 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 do código é o código-fonte da interface e dos controlos. O ficheiro fonte contém uma interface simples chamada IZipCode. Existe também uma WebPart classe chamada ZipCodeWebPart que implementa a interface e atua como controlo do fornecedor. O seu método é o método de ProvideIZipCode callback que implementa o único membro da interface. O método simplesmente devolve uma instância da interface. Note que o método está marcado com um ConnectionProvider atributo nos seus metadados. Este é o mecanismo para identificar o método como método de callback para o ponto de ligação do fornecedor. A outra WebPart classe chama-se WeatherWebPart, e atua como consumidor para a ligação. Esta classe tem um método chamado GetZipCode que obtém uma instância da IZipCode interface do controlo do fornecedor. Note que este método está marcado como o método do ponto de ligação do consumidor com um ConnectionConsumer atributo nos seus metadados.
Para que o exemplo de código seja executado, tens de compilar este código-fonte. Pode compilar explicitamente e colocar o assembly resultante na pasta Bin do seu site ou na cache global assembly. Alternativamente, pode colocar o código-fonte na pasta App_Code do seu site, onde será compilado dinamicamente em tempo de execução. Este exemplo de código utiliza compilação dinâmica. Para um guia que demonstra como compilar, consulte Guia: Desenvolvimento e Utilização de um Controlo 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 mestre. Deves pegar no seguinte código-fonte e guardá-lo num ficheiro, chamando-lhe MasterPageCS.master ou MasterPageVB.master (dependendo da linguagem que usares). Note que a página-mestre contém uma Register diretiva para registar o controlo do utilizador, e faz referência ao controlo do utilizador no corpo da página. A página mestra também declara o elemento único <asp:webpartmanager> usado para esta página e todas as páginas de conteúdo relacionadas. Finalmente, a página mestre tem um <asp: contentplaceholder> elemento que declara o ponto na página onde 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 do código é a página de conteúdo. Deves copiar o código-fonte seguinte e guardá-lo num ficheiro com uma extensão .aspx. Note que a sua Page diretiva contém um MasterFile atributo para se referir à página mestre. Além disso, esta página tem uma Register diretiva para registar o ficheiro na pasta App_Code que contém os controlos personalizados WebPart compilados dinamicamente que participam na ligação. Dentro das <asp:content> etiquetas da página, existe um <asp:proxywebpartmanager> elemento, com um elemento filho <staticconnections> , que por sua vez tem um elemento filho <asp:webpartconnection> para declarar os detalhes da ligação. Dentro das <script> etiquetas na página, o Button1_Click método adiciona algum código que acede ao WebPartManager controlo principal na página mestre e ao ProxyWebPartManager controlo na página de conteúdo, e escreve alguns dos 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 num navegador, clique no botão WebPartManager Information e observe a informação sobre o WebPartManager controlo na página mestre e o ProxyWebPartManager controlo na página de conteúdo. Por exemplo, note que ambos têm a mesma contagem nas respetivas propriedades que acompanham ligações estáticas (a StaticConnections propriedade). Note-se também que, embora o WebPartManager controlo tenha uma WebParts propriedade que acompanha o número de WebPart controlos que gere, o ProxyWebPartManager controlo não possui tal propriedade, pois o seu único propósito é conter ligações estáticas.
Observações
O ProxyWebPartManager controlo existe para o cenário particular de declarar ligações estáticas em páginas de conteúdo quando um WebPartManager controlo já foi declarado numa página mestre.
Por design, uma página Web que utiliza controlos Web Parts deve conter um (e apenas um) WebPartManager controlo que gere todos os controlos Web Parts na página. Quando uma aplicação de Web Parts utiliza páginas mestres, é comum colocar o WebPartManager controlo na página mestre, porque todas as páginas de conteúdo são fundidas com a página mestre em tempo de execução e o controlo único WebPartManager gerirá todos os controlos de Web Parts a partir de todas as páginas de conteúdo. No entanto, quando os programadores querem declarar ligações estáticas nas páginas de conteúdo de uma aplicação deste tipo, podem parecer enfrentar uma limitação. Uma ligação estática de Web Parts só pode ser declarada adicionando um <asp:webpartconnection> elemento como filho de um <staticconnections> elemento, que por sua vez deve ser filho de um <asp:webpartmanager> elemento. Mas, como o controlo WebPartManager já foi declarado na página mestre, e é o único controlo permitido WebPartManager , os programadores não podem declarar controlos adicionais WebPartManager nas páginas de conteúdo para adicionar ligações estáticas.
O ProxyWebPartManager controlo substitui o WebPartManager controlo neste cenário. Os programadores declaram um <asp:proxywebpartmanager> elemento em vez de um <asp:webpartmanager> elemento nas suas páginas de conteúdo, e podem então declarar ligações estáticas como elementos filhos. Em tempo de execução, as ligações no ProxyWebPartManager controlo são simplesmente adicionadas à StaticConnections coleção do WebPartManager controlo e tratadas como qualquer outra ligação.
Como o ProxyWebPartManager controlo é usado apenas neste cenário de desenvolvimento particular, tem funcionalidades mais limitadas do que a WebPartManager classe. De facto, embora o ProxyWebPartManager controlo atue como um proxy para conter ligações estáticas para o WebPartManager controlo nas páginas de conteúdo, não herda do WebPartManager controlo. Herda diretamente da Control classe e sobrepõe apenas alguns dos membros base. As EnableThemingpropriedades , Visible, e SkinID são sobrepostas e atribuídas valores que impedem a sua utilização. Outras propriedades herdadas são sobrepostas para ajustar o seu comportamento em tempo de projeto, mas de resto têm o mesmo comportamento que as propriedades base. Estas incluem as Controls propriedades e ClientID . Finalmente, a ProxyWebPartManager classe tem uma propriedade não herdada. A StaticConnections propriedade devolve a sua própria coleção de ligações estáticas (um ProxyWebPartConnectionCollection objeto).
Quanto aos métodos, a ProxyWebPartManager classe também sobrepõe-se a apenas alguns métodos, principalmente para restringir o seu uso. O método herdado Focus torna-se inutilizável ao lançar uma exceção se for chamado. O CreateControlCollection método devolve sempre uma coleção de controlos vazia, o que tem o efeito de impedir que consiga conter uma coleção de controlos. Finalmente, o OnInit método chama o método base e depois atribui a coleção de ligações referenciadas pela StaticConnections propriedade à WebPartManager.StaticConnections propriedade do WebPartManager controlo. Isto tem o efeito de agrupar todas as ligações estáticas declaradas em todas as páginas de conteúdo e torná-las parte da coleção de ligações mantida pelo WebPartManager controlo na página mestre.
Construtores
| Name | Description |
|---|---|
| ProxyWebPartManager() |
Inicializa uma nova instância da ProxyWebPartManager classe. |
Propriedades
| Name | Description |
|---|---|
| Adapter |
Recebe o adaptador específico do navegador para o controlo. (Herdado de Control) |
| AppRelativeTemplateSourceDirectory |
Obtém ou define o diretório virtual relativo à aplicação do Page objeto ou UserControl que contém este controlo. (Herdado de Control) |
| BindingContainer |
Obtém o controlo que contém a ligação de dados desse controlo. (Herdado de Control) |
| ChildControlsCreated |
Recebe um valor que indica se os controlos filhos do controlo do servidor foram criados. (Herdado de Control) |
| ClientID |
Obtém o ID de controlo para a marcação HTML gerada pelo ASP.NET. |
| ClientIDMode |
Obtém ou define o algoritmo que é usado para gerar o valor da ClientID propriedade. (Herdado de Control) |
| ClientIDSeparator |
Obtém um valor de carácter que representa o carácter separador usado na ClientID propriedade. (Herdado de Control) |
| Context |
Obtém o controlo do HttpContext objeto associado ao servidor para o pedido Web atual. (Herdado de Control) |
| Controls |
Obtém um ControlCollection objeto que representa os controlos filhos de um servidor especificado na hierarquia da interface. |
| DataItemContainer |
Obtém uma referência ao contentor de nomes se o contentor implementar IDataItemContainer. (Herdado de Control) |
| DataKeysContainer |
Obtém uma referência ao contentor de nomes se o contentor implementar IDataKeysControl. (Herdado de Control) |
| DesignMode |
Obtém um valor que indica se um controlo está a ser usado numa superfície de projeto. (Herdado de Control) |
| EnableTheming |
Sobrepõe a propriedade base para impedir o uso de temas. |
| EnableViewState |
Recebe ou define um valor que indica se o controlo do servidor mantém o seu estado de visualização, e o estado de vista de quaisquer controlos filhos que contém, para o cliente solicitante. (Herdado de Control) |
| Events |
Obtém uma lista de delegados handler de eventos para o controlo. Esta propriedade é somente leitura. (Herdado de Control) |
| HasChildViewState |
Recebe um valor que indica se os controlos filhos do controlo atual do servidor têm alguma configuração de estado de visualização guardada. (Herdado de Control) |
| ID |
Obtém ou define o identificador programático atribuído ao controlo do servidor. (Herdado de Control) |
| IdSeparator |
Faz com que o carácter seja usado para separar identificadores de controlo. (Herdado de Control) |
| IsChildControlStateCleared |
Obtém um valor que indica se os controlos contidos neste controlo têm estado de controlo. (Herdado de Control) |
| IsTrackingViewState |
Recebe um valor que indica se o controlo do servidor está a guardar alterações ao estado de visualização. (Herdado de Control) |
| IsViewStateEnabled |
Recebe um valor que indica se o estado de visualização está ativado para este controlo. (Herdado de Control) |
| LoadViewStateByID |
Recebe um valor que indica se o controlo participa no carregamento do seu estado de visualização em ID vez de index. (Herdado de Control) |
| NamingContainer |
Obtém uma referência ao contentor de nomes do controlo do servidor, que cria um namespace único para diferenciar controlos 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 controlo do servidor. (Herdado de Control) |
| Parent |
Obtém uma referência ao controlo pai do controlo do servidor na hierarquia de controlo de página. (Herdado de Control) |
| RenderingCompatibility |
Recebe 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ção sobre o contentor que aloja o controlo atual quando renderizado numa superfície de design. (Herdado de Control) |
| SkinID |
Sobrepõe-se à propriedade base para impedir que um valor seja atribuído. |
| StaticConnections |
Obtém uma coleção de ligações estáticas declaradas dentro do |
| TemplateControl |
Recebe ou define uma referência ao template que contém esse controlo. (Herdado de Control) |
| TemplateSourceDirectory |
Obtém o diretório virtual do Page ou UserControl que contém o controlo atual do servidor. (Herdado de Control) |
| UniqueID |
Obtém o identificador único e hierarquicamente qualificado para o controlo do servidor. (Herdado de Control) |
| ValidateRequestMode |
Recebe ou define um valor que indica se o controlo verifica a entrada do cliente do navegador para valores potencialmente perigosos. (Herdado de Control) |
| ViewState |
Obtém um dicionário de informação de estado que permite guardar e restaurar o estado de visualização de um controlo de servidor através de múltiplos pedidos para a mesma página. (Herdado de Control) |
| ViewStateIgnoresCase |
Obtém um valor que indica se o StateBag objeto é indistinto a maiúsculas e maiúsculas. (Herdado de Control) |
| ViewStateMode |
Obtém ou define o modo view-state deste controlo. (Herdado de Control) |
| Visible |
Sobrepõe-se à propriedade base para impedir que um valor seja atribuído. |
Métodos
| Name | Description |
|---|---|
| AddedControl(Control, Int32) |
Chamado após um controlo filho ser adicionado à Controls coleção do Control objeto. (Herdado de Control) |
| AddParsedSubObject(Object) |
Notifica o controlo do servidor que um elemento, seja XML ou HTML, foi analisado, e adiciona o elemento ao objeto do ControlCollection controlo do servidor. (Herdado de Control) |
| ApplyStyleSheetSkin(Page) |
Aplica as propriedades de estilo definidas na folha de estilo da página ao controlo. (Herdado de Control) |
| BeginRenderTracing(TextWriter, Object) |
Inicia o rastreio em tempo de design dos dados de renderização. (Herdado de Control) |
| BuildProfileTree(String, Boolean) |
Recolhe informações sobre o controlo do servidor e entrega-as à Trace propriedade para serem exibidas quando o rastreamento for ativado para a página. (Herdado de Control) |
| ClearCachedClientID() |
Define o valor em ClientID cache para |
| ClearChildControlState() |
Apaga a informação de estado de controlo dos controlos filhos do controlo do servidor. (Herdado de Control) |
| ClearChildState() |
Apaga a informação de view-state e control-state de todos os controlos filhos do servidor. (Herdado de Control) |
| ClearChildViewState() |
Elimina a informação de estado de visualização de todos os controlos filhos do controlo do servidor. (Herdado de Control) |
| ClearEffectiveClientIDMode() |
Define a ClientIDMode propriedade da instância de controlo atual e de qualquer controlo filho para Inherit. (Herdado de Control) |
| CreateChildControls() |
Chamada pelo framework de páginas ASP.NET para notificar os controlos de servidor que utilizam implementação baseada em composição para criar quaisquer controlos filhos que contenham em preparação para publicação ou renderização. (Herdado de Control) |
| CreateControlCollection() |
Sobrepõe-se à propriedade base para impedir que o ProxyWebPartManager controlo contenha controlos. |
| DataBind() |
Vincula uma fonte de dados ao controlo do servidor invocado e a todos os seus controlos filhos. (Herdado de Control) |
| DataBind(Boolean) |
Vincula uma fonte de dados ao controlo do servidor invocado e a todos os seus controlos filhos com uma opção para elevar o DataBinding evento. (Herdado de Control) |
| DataBindChildren() |
Vincula uma fonte de dados aos controlos filhos do controlo do servidor. (Herdado de Control) |
| Dispose() |
Permite que o controlo do servidor realize a limpeza final antes de ser libertado da memória. (Herdado de Control) |
| EndRenderTracing(TextWriter, Object) |
Termina o rastreio de tempo de design dos dados de renderização. (Herdado de Control) |
| EnsureChildControls() |
Determina se o controlo do servidor contém controlos filhos. Se não o fizer, cria controlos filhos. (Herdado de Control) |
| EnsureID() |
Cria um identificador para controlos 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 no contentor de nomenclatura atual um controlo de servidor com o especificado |
| FindControl(String) |
Procura no contentor de nomenclatura atual um controlo de servidor com o parâmetro especificado |
| Focus() |
Sobrepõe o método base para evitar que o método seja chamado. |
| GetDesignModeState() |
Obtém dados de tempo de projeto para um controlo. (Herdado de Control) |
| GetHashCode() |
Serve como função de hash predefinida. (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 o URL que corresponde a um conjunto de parâmetros de rota e a um nome de rota. (Herdado de Control) |
| GetRouteUrl(String, RouteValueDictionary) |
Obtém o URL que corresponde a um conjunto de parâmetros de rota e a um nome de rota. (Herdado de Control) |
| GetType() |
Obtém o Type da instância atual. (Herdado de Object) |
| GetUniqueIDRelativeTo(Control) |
Devolve a parte prefixada da UniqueID propriedade do controlo especificado. (Herdado de Control) |
| HasControls() |
Determina se o controlo do servidor contém algum controlo filho. (Herdado de Control) |
| HasEvents() |
Devolve um valor que indica se os eventos estão registados para o controlo ou para quaisquer controlos filhos. (Herdado de Control) |
| IsLiteralContent() |
Determina se o controlo do servidor contém apenas conteúdo literal. (Herdado de Control) |
| LoadControlState(Object) |
Restaura a informação do estado de controlo a partir de um pedido de página anterior que foi guardado pelo SaveControlState() método. (Herdado de Control) |
| LoadViewState(Object) |
Restaura a informação de estado de visualização de um pedido anterior de página que foi guardado pelo SaveViewState() método. (Herdado de Control) |
| MapPathSecure(String) |
Recupera o caminho físico para o qual um caminho virtual, seja absoluto ou relativo, mapeia. (Herdado de Control) |
| MemberwiseClone() |
Cria uma cópia superficial do atual Object. (Herdado de Object) |
| OnBubbleEvent(Object, EventArgs) |
Determina se o evento para o controlo do servidor é passado para a hierarquia de controlo do servidor UI da página. (Herdado de Control) |
| OnDataBinding(EventArgs) |
Eleva o DataBinding evento. (Herdado de Control) |
| OnInit(EventArgs) |
Levanta o Init evento e inicializa o controlo. |
| OnLoad(EventArgs) |
Eleva o Load evento. (Herdado de Control) |
| OnPreRender(EventArgs) |
Eleva o PreRender evento. (Herdado de Control) |
| OnUnload(EventArgs) |
Eleva o Unload evento. (Herdado de Control) |
| OpenFile(String) |
Recebe um Stream usado para ler um ficheiro. (Herdado de Control) |
| RaiseBubbleEvent(Object, EventArgs) |
Atribui quaisquer fontes do evento e da sua informação ao pai do controlo. (Herdado de Control) |
| RemovedControl(Control) |
Chamado após um controlo filho ser removido da Controls coleção do Control objeto. (Herdado de Control) |
| Render(HtmlTextWriter) |
Envia conteúdo de controlo do servidor para um objeto fornecido HtmlTextWriter , que escreve o conteúdo a ser renderizado no cliente. (Herdado de Control) |
| RenderChildren(HtmlTextWriter) |
Exporta o conteúdo dos filhos de um controlo de servidor para um objeto fornecido HtmlTextWriter , que escreve o conteúdo a ser renderizado no cliente. (Herdado de Control) |
| RenderControl(HtmlTextWriter, ControlAdapter) |
Fornece conteúdo de controlo do servidor para um objeto fornecido HtmlTextWriter usando um objeto fornecido ControlAdapter . (Herdado de Control) |
| RenderControl(HtmlTextWriter) |
Fornece conteúdo de controlo do servidor para um objeto fornecido HtmlTextWriter e armazena informação de rastreamento sobre o controlo se o rastreio estiver ativado. (Herdado de Control) |
| ResolveAdapter() |
Faz com que o adaptador de controlo seja responsável por renderizar o controlo especificado. (Herdado de Control) |
| ResolveClientUrl(String) |
Recebe um URL que pode ser usado pelo navegador. (Herdado de Control) |
| ResolveUrl(String) |
Converte uma URL numa que seja utilizável no cliente solicitante. (Herdado de Control) |
| SaveControlState() |
Guarda quaisquer alterações no estado de controlo do servidor que tenham ocorrido desde que a página foi publicada de volta no servidor. (Herdado de Control) |
| SaveViewState() |
Guarda quaisquer alterações de estado de visualização no controlo do servidor que tenham ocorrido desde o momento em que a página foi publicada de volta no servidor. (Herdado de Control) |
| SetDesignModeState(IDictionary) |
Define dados em tempo de projeto para um controlo. (Herdado de Control) |
| SetRenderMethodDelegate(RenderMethod) |
Atribui um delegado handler de eventos para renderizar o controlo do servidor e o seu conteúdo no controlo pai. (Herdado de Control) |
| SetTraceData(Object, Object, Object) |
Define os dados de rastreio para o rastreio em tempo de design dos dados de renderização, usando o objeto rastreado, a chave de dados de traço e o valor dos dados de traço. (Herdado de Control) |
| SetTraceData(Object, Object) |
Define os dados de rastreio para o rastreio em tempo de design dos dados de renderização, usando a chave de dados de traço e o valor dos dados de traço. (Herdado de Control) |
| ToString() |
Devolve uma cadeia que representa o objeto atual. (Herdado de Object) |
| TrackViewState() |
Causa o rastreio das alterações de estado de visualização no controlo do servidor para que possam ser armazenadas no objeto do StateBag controlo do servidor. Este objeto é acessível através da ViewState propriedade. (Herdado de Control) |
evento
| Name | Description |
|---|---|
| DataBinding |
Ocorre quando o controlo do servidor se liga a uma fonte de dados. (Herdado de Control) |
| Disposed |
Ocorre quando um controlo de servidor é libertado da memória, que é a última etapa do ciclo de vida do controlo do servidor quando uma página ASP.NET é solicitada. (Herdado de Control) |
| Init |
Ocorre quando o controlo do servidor é inicializado, que é o primeiro passo no seu ciclo de vida. (Herdado de Control) |
| Load |
Ocorre quando o controlo do servidor é carregado no Page objeto. (Herdado de Control) |
| PreRender |
Ocorre depois do carregamento do Control objeto, mas antes da renderização. (Herdado de Control) |
| Unload |
Ocorre quando o controlo do servidor é descarregado da memória. (Herdado de Control) |
Implementações de Interface Explícita
Métodos da Extensão
| Name | Description |
|---|---|
| FindDataSourceControl(Control) |
Devolve a fonte de dados associada ao controlo de dados para o controlo especificado. |
| FindFieldTemplate(Control, String) |
Devolve o modelo de campo para a coluna especificada no contentor de nomenclatura do controlo especificado. |
| FindMetaTable(Control) |
Devolve o objeto metatable para o controlo de dados que contém. |