ProxyWebPartManager Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Proporciona a los programadores un método para declarar conexiones estáticas en una página de contenido cuando se declara un control WebPartManager en la página principal asociada de la página de contenido.
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
- Herencia
- Atributos
Ejemplos
En el ejemplo de código siguiente se muestra cómo usar la ProxyWebPartManager clase para declarar conexiones estáticas en páginas de contenido de una aplicación que usa páginas maestras. El ejemplo tiene cinco partes:
Control de usuario que permite cambiar el modo de presentación de elementos web en una página.
Código fuente de una interfaz y dos WebPart controles que actúan como proveedor y consumidor para una conexión.
Página web maestra que hospeda el control de usuario, las páginas de contenido y el WebPartManager control de la aplicación.
Página web de contenido que hospeda un ProxyWebPartManager control, los dos controles personalizados WebPart y una conexión estática para conectar los dos controles.
Explicación de cómo ejecutar la página de ejemplo.
La primera parte de este ejemplo de código es el control de usuario que permite a los usuarios cambiar los modos de presentación en una página web. Guarde el siguiente código fuente en un archivo .ascx y asígnele el nombre de archivo asignado al Src
atributo de la Register
directiva para este control de usuario, que está cerca de la parte superior de la página maestra de hospedaje. Para obtener más información sobre los modos de presentación y una descripción del código fuente de este control, vea 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>
La segunda parte del ejemplo de código es el código fuente de la interfaz y los controles. El archivo de origen contiene una interfaz simple denominada IZipCode
. También hay una WebPart clase denominada ZipCodeWebPart
que implementa la interfaz y actúa como control de proveedor. Su ProvideIZipCode
método es el método de devolución de llamada que implementa el único miembro de la interfaz. El método simplemente devuelve una instancia de la interfaz . Tenga en cuenta que el método está marcado con un ConnectionProvider
atributo en sus metadatos. Este es el mecanismo para identificar el método como método de devolución de llamada para el punto de conexión del proveedor. La otra WebPart clase se denomina WeatherWebPart
y actúa como consumidor de la conexión. Esta clase tiene un método denominado GetZipCode
que obtiene una instancia de la IZipCode
interfaz del control de proveedor. Tenga en cuenta que este método se marca como método de punto de conexión del consumidor con un ConnectionConsumer
atributo en sus metadatos.
Para que se ejecute el ejemplo de código, debe compilar este código fuente. Puede compilarlo explícitamente y colocar el ensamblado resultante en la carpeta Bin del sitio web o en la caché global de ensamblados. Como alternativa, puede colocar el código fuente en la carpeta App_Code del sitio, donde se compilará dinámicamente en tiempo de ejecución. En este ejemplo de código se usa la compilación dinámica. Para ver un tutorial que muestra cómo compilar, vea Tutorial: Desarrollo y uso de un control 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
La tercera parte del ejemplo de código es la página maestra. Debe tomar el siguiente código fuente y guardarlo en un archivo, asígnele el nombre MasterPageCS.master o MasterPageVB.master (dependiendo del idioma que use). Tenga en cuenta que la página maestra contiene una Register
directiva para registrar el control de usuario y hace referencia al propio control de usuario en el cuerpo de la página. La página maestra también declara el único <asp:webpartmanager>
elemento usado para esta página y todas las páginas de contenido relacionadas. Por último, la página maestra tiene un <asp: contentplaceholder>
elemento que declara el punto de la página donde se inserta la página de contenido.
<%@ Master Language="C#" %>
<%@ register tagprefix="uc1"
tagname="DisplayModeMenuCS"
src="~/displaymodemenucs.ascx" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Master page with connections in content pages</title>
</head>
<body>
<h2>Contoso, Ltd.</h2>
<hr />
<form id="form1" runat="server">
<asp:webpartmanager runat="server" id="WebPartManager1" />
<uc1:displaymodemenucs id="menu1" runat="server" />
<div>
<asp:contentplaceholder id="ContentPlaceHolder1"
runat="server" />
</div>
</form>
</body>
</html>
<%@ Master Language="VB" %>
<%@ register tagprefix="uc1"
tagname="DisplayModeMenuVB"
src="~/displaymodemenuvb.ascx" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Master page with connections in content pages</title>
</head>
<body>
<h2>Contoso, Ltd.</h2>
<hr />
<form id="form1" runat="server">
<asp:webpartmanager runat="server" id="WebPartManager1" />
<uc1:displaymodemenuvb id="menu1" runat="server" />
<div>
<asp:contentplaceholder id="ContentPlaceHolder1"
runat="server" />
</div>
</form>
</body>
</html>
La cuarta parte del ejemplo de código es la página de contenido. Debe copiar el código fuente siguiente y guardarlo en un archivo con una extensión .aspx. Observe que su Page
directiva contiene un MasterFile
atributo para hacer referencia a la página maestra. Además, esta página tiene una Register
directiva para registrar el archivo en la carpeta App_Code que contiene los controles personalizados WebPart compilados dinámicamente que participan en la conexión. Dentro de las <asp:content>
etiquetas de la página, hay un <asp:proxywebpartmanager>
elemento , con un elemento secundario <staticconnections>
, que a su vez tiene un elemento secundario <asp:webpartconnection>
para declarar los detalles de la conexión. Dentro de las <script>
etiquetas de la página, el Button1_Click
método agrega código que accede al control principal WebPartManager en la página maestra y el ProxyWebPartManager control de la página de contenido y escribe algunos de sus detalles en la 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>
Después de cargar la página en un explorador, haga clic en el botón Información de WebPartManager y observe la información sobre el WebPartManager control en la página maestra y el ProxyWebPartManager control de la página de contenido. Por ejemplo, tenga en cuenta que ambos tienen el mismo recuento en sus respectivas propiedades que realizan un seguimiento de las conexiones estáticas (la StaticConnections propiedad ). Tenga en cuenta también que, aunque el WebPartManager control tiene una propiedad que realiza un WebParts seguimiento del número de WebPart controles que administra, el ProxyWebPartManager control no tiene dicha propiedad, ya que su único propósito es contener conexiones estáticas.
Comentarios
El ProxyWebPartManager control existe para el escenario concreto de declarar conexiones estáticas en páginas de contenido cuando un WebPartManager control ya se ha declarado en una página maestra.
Por diseño, una página web que use controles de elementos web debe contener un control (y solo uno) WebPartManager que administre todos los controles de elementos web de la página. Cuando una aplicación de elementos web usa páginas maestras, es habitual colocar el WebPartManager control en la página maestra, ya que todas las páginas de contenido se combinan con la página maestra en tiempo de ejecución y el único WebPartManager control administrará todos los controles de elementos web de todas las páginas de contenido. Sin embargo, cuando los desarrolladores quieren declarar conexiones estáticas en las páginas de contenido de esta aplicación, es posible que parezcan tener una limitación. Una conexión de elementos web estáticos solo se puede declarar agregando un <asp:webpartconnection>
elemento como elemento secundario de un <staticconnections>
elemento, que debe ser un elemento secundario de un <asp:webpartmanager>
elemento. Pero dado que el WebPartManager control ya se declaró en la página maestra y es el único control permitido WebPartManager , los desarrolladores no pueden declarar controles adicionales WebPartManager en las páginas de contenido para agregar conexiones estáticas.
El ProxyWebPartManager control tiene lugar del WebPartManager control en este escenario. Los desarrolladores declaran un <asp:proxywebpartmanager>
elemento en lugar de un <asp:webpartmanager>
elemento en sus páginas de contenido y, a continuación, pueden declarar conexiones estáticas como elementos secundarios. En tiempo de ejecución, las conexiones del ProxyWebPartManager control simplemente se agregan a la StaticConnections colección del WebPartManager control y se tratan como cualquier otra conexión.
Dado que el ProxyWebPartManager control solo se usa en este escenario de desarrollo en particular, tiene una funcionalidad más limitada que la WebPartManager clase . De hecho, aunque el ProxyWebPartManager control actúa como proxy para contener conexiones estáticas para el WebPartManager control en páginas de contenido, no hereda del WebPartManager control . Hereda directamente de la Control clase e invalida solo algunos de los miembros base. Las EnableThemingpropiedades , Visibley SkinID se invalidan y asignan valores que impiden que se usen. Otras propiedades heredadas se invalidan para ajustar su comportamiento en tiempo de diseño, pero de lo contrario tienen el mismo comportamiento que las propiedades base. Entre ellas se incluyen las Controls propiedades y ClientID . Por último, la ProxyWebPartManager clase tiene una propiedad no heredada. La StaticConnections propiedad devuelve su propia colección de conexiones estáticas (un ProxyWebPartConnectionCollection objeto ).
En cuanto a los métodos, la ProxyWebPartManager clase invalida de forma similar solo algunos métodos, principalmente para restringir su uso. El método heredado Focus se hace inutilizable iniciando una excepción si se llama a . El CreateControlCollection método siempre devuelve una colección de controles vacía, que tiene el efecto de impedir que pueda contener una colección de controles. Por último, el OnInit método llama al método base y, a continuación, asigna la colección de conexiones a las que hace referencia la StaticConnections propiedad a la WebPartManager.StaticConnections propiedad del WebPartManager control . Esto tiene el efecto de implementar todas las conexiones estáticas declaradas en todas las páginas de contenido y convertirlos en parte de la colección de conexiones mantenidas por el WebPartManager control en la página maestra.
Constructores
ProxyWebPartManager() |
Inicializa una nueva instancia de la clase ProxyWebPartManager. |
Propiedades
Adapter |
Obtiene el adaptador específico del explorador para el control. (Heredado de Control) |
AppRelativeTemplateSourceDirectory |
Obtiene o establece el directorio virtual relativo a la aplicación del objeto Page o el objeto UserControl que contiene este control. (Heredado de Control) |
BindingContainer |
Obtiene el control que contiene el enlace de datos de este control. (Heredado de Control) |
ChildControlsCreated |
Obtiene un valor que indica si se han creado controles secundarios del control de servidor. (Heredado de Control) |
ClientID |
Obtiene el id. de control para marcado HTML que se genera por ASP.NET. |
ClientIDMode |
Obtiene o establece el algoritmo que se utiliza para generar el valor de la propiedad ClientID. (Heredado de Control) |
ClientIDSeparator |
Obtiene un valor de carácter que representa el carácter separado utilizado en la propiedad ClientID. (Heredado de Control) |
Context |
Obtiene el objeto HttpContext asociado al control de servidor para la solicitud Web actual. (Heredado de Control) |
Controls |
Obtiene un objeto ControlCollection que representa los controles secundarios de un control de servidor especificado en la jerarquía de la interfaz de usuario. |
DataItemContainer |
Obtiene una referencia al contenedor de nomenclatura si este implementa IDataItemContainer. (Heredado de Control) |
DataKeysContainer |
Obtiene una referencia al contenedor de nomenclatura si este implementa IDataKeysControl. (Heredado de Control) |
DesignMode |
Obtiene un valor que indica si se está utilizando un control en una superficie de diseño. (Heredado de Control) |
EnableTheming |
Reemplaza la propiedad base para impedir que se utilicen temas. |
EnableViewState |
Obtiene o establece un valor que indica si el control de servidor conserva su estado de vista, así como el estado de vista de los controles secundarios que contiene, al cliente solicitante. (Heredado de Control) |
Events |
Obtiene una lista de delegados de controladores de eventos del control. Esta propiedad es de sólo lectura. (Heredado de Control) |
HasChildViewState |
Obtiene un valor que indica si los controles secundarios del control de servidor actual tienen guardada alguna configuración del estado de vista. (Heredado de Control) |
ID |
Obtiene o establece el identificador de programación asignado al control de servidor. (Heredado de Control) |
IdSeparator |
Obtiene el carácter utilizado para separar los identificadores de control. (Heredado de Control) |
IsChildControlStateCleared |
Obtiene un valor que indica si los controles que se encuentran en este control tienen estado de control. (Heredado de Control) |
IsTrackingViewState |
Obtiene un valor que indica si el control de servidor está guardando los cambios realizados en su estado de vista. (Heredado de Control) |
IsViewStateEnabled |
Obtiene un valor que indica si el estado de vista está habilitado para este control. (Heredado de Control) |
LoadViewStateByID |
Obtiene un valor que indica si el control participa en la carga de su estado de vista mediante ID en lugar de índice. (Heredado de Control) |
NamingContainer |
Obtiene una referencia al contenedor de nomenclatura del control de servidor, que crea un espacio de nombres único para diferenciar los distintos controles de servidor que tienen el mismo valor para la propiedad ID. (Heredado de Control) |
Page |
Obtiene una referencia a la instancia Page que contiene el control de servidor. (Heredado de Control) |
Parent |
Obtiene una referencia al control principal del control de servidor en la jerarquía de controles de página. (Heredado de Control) |
RenderingCompatibility |
Obtiene o establece un valor que especifica la versión de ASP.NET compatible con los elementos HTML representados. (Heredado de Control) |
Site |
Obtiene información sobre el contenedor en que se encuentra el control actual cuando se representa en una superficie de diseño. (Heredado de Control) |
SkinID |
Reemplaza la propiedad base para evitar que se asigne un valor. |
StaticConnections |
Obtiene una colección de conexiones estáticas declarada dentro del elemento |
TemplateControl |
Obtiene o establece una referencia a la plantilla que contiene este control. (Heredado de Control) |
TemplateSourceDirectory |
Obtiene el directorio virtual de Page o UserControl que contiene el control de servidor actual. (Heredado de Control) |
UniqueID |
Obtiene el identificador único calificado jerárquicamente para el control de servidor. (Heredado de Control) |
ValidateRequestMode |
Obtiene o establece un valor que indica si el control comprueba la entrada del cliente desde el explorador para valores potencialmente peligrosos. (Heredado de Control) |
ViewState |
Obtiene un diccionario con información de estado que le permite guardar y restaurar el estado de vista de un control de servidor en las distintas solicitudes de la misma página. (Heredado de Control) |
ViewStateIgnoresCase |
Obtiene un valor que indica si el objeto StateBag no distingue mayúsculas de minúsculas. (Heredado de Control) |
ViewStateMode |
Obtiene o establece el modo del estado de vista de este control. (Heredado de Control) |
Visible |
Reemplaza la propiedad base para evitar que se asigne un valor. |
Métodos
AddedControl(Control, Int32) |
Se llama después de agregar un control secundario a la colección Controls del objeto Control. (Heredado de Control) |
AddParsedSubObject(Object) |
Notifica al control de servidor que se analizó un elemento, ya sea XML o HTML, y agrega el elemento al objeto ControlCollection del control del servidor. (Heredado de Control) |
ApplyStyleSheetSkin(Page) |
Aplica al control las propiedades de estilo definidas en la hoja de estilos de la página. (Heredado de Control) |
BeginRenderTracing(TextWriter, Object) |
Comienza el seguimiento en tiempo de diseño de los datos de representación. (Heredado de Control) |
BuildProfileTree(String, Boolean) |
Recopila información sobre el control de servidor y la pasa a la propiedad Trace para que se muestre cuando está habilitada la traza de la página. (Heredado de Control) |
ClearCachedClientID() |
Establece en |
ClearChildControlState() |
Elimina la información sobre el estado de control de los controles secundarios del control de servidor. (Heredado de Control) |
ClearChildState() |
Elimina la información sobre el estado de vista y el estado de control de los controles secundarios del control de servidor. (Heredado de Control) |
ClearChildViewState() |
Elimina la información sobre el estado de vista de todos los controles secundarios del control de servidor. (Heredado de Control) |
ClearEffectiveClientIDMode() |
Establece la propiedad ClientIDMode de la instancia del control actual y de cualquier control secundario en Inherit. (Heredado de Control) |
CreateChildControls() |
Lo llama el marco de páginas ASP.NET para indicar a los controles de servidor que usan la implementación basada en composición que creen los controles secundarios que contengan como forma de preparar la devolución o representación de los datos. (Heredado de Control) |
CreateControlCollection() |
Reemplaza la propiedad base para evitar que el control ProxyWebPartManager contenga controles. |
DataBind() |
Enlaza un origen de datos al control de servidor invocado y a todos sus controles secundarios. (Heredado de Control) |
DataBind(Boolean) |
Enlaza un origen de datos al control de servidor que se ha invocado y a todos sus controles secundarios con una opción para generar el evento DataBinding. (Heredado de Control) |
DataBindChildren() |
Enlaza un origen de datos a los controles secundarios del control de servidor. (Heredado de Control) |
Dispose() |
Habilita un control de servidor para que realice la limpieza final antes de que se libere de la memoria. (Heredado de Control) |
EndRenderTracing(TextWriter, Object) |
Finaliza el seguimiento en tiempo de diseño de los datos de representación. (Heredado de Control) |
EnsureChildControls() |
Determina si el control de servidor contiene controles secundarios. Si no tiene controles secundarios, los crea. (Heredado de Control) |
EnsureID() |
Crea un identificador para controles que no tiene un identificador asignado. (Heredado de Control) |
Equals(Object) |
Determina si el objeto especificado es igual que el objeto actual. (Heredado de Object) |
FindControl(String) |
Busca un control de servidor con el parámetro |
FindControl(String, Int32) |
Busca el contenedor de nomenclatura actual para un control de servidor con el |
Focus() |
Reemplaza el método base para evitar que se llame a este método. |
GetDesignModeState() |
Obtiene datos en tiempo de diseño para un control. (Heredado de Control) |
GetHashCode() |
Sirve como la función hash predeterminada. (Heredado de Object) |
GetRouteUrl(Object) |
Obtiene la dirección URL que corresponde a un conjunto de parámetros de ruta. (Heredado de Control) |
GetRouteUrl(RouteValueDictionary) |
Obtiene la dirección URL que corresponde a un conjunto de parámetros de ruta. (Heredado de Control) |
GetRouteUrl(String, Object) |
Obtiene la dirección URL que corresponde a un conjunto de parámetros de ruta y un nombre de ruta. (Heredado de Control) |
GetRouteUrl(String, RouteValueDictionary) |
Obtiene la dirección URL que corresponde a un conjunto de parámetros de ruta y un nombre de ruta. (Heredado de Control) |
GetType() |
Obtiene el Type de la instancia actual. (Heredado de Object) |
GetUniqueIDRelativeTo(Control) |
Devuelve la parte correspondiente al prefijo de la propiedad UniqueID del control especificado. (Heredado de Control) |
HasControls() |
Determina si el control de servidor contiene controles secundarios. (Heredado de Control) |
HasEvents() |
Devuelve un valor que indica si se registran eventos para el control o los controles secundarios. (Heredado de Control) |
IsLiteralContent() |
Determina si el control de servidor alberga únicamente contenido literal. (Heredado de Control) |
LoadControlState(Object) |
Restaura información de estado de control de una solicitud de página anterior guardada por el método SaveControlState(). (Heredado de Control) |
LoadViewState(Object) |
Restaura la información de estado de vista de una solicitud de página anterior guardada por el método SaveViewState(). (Heredado de Control) |
MapPathSecure(String) |
Recupera la ruta de acceso física a la que se asigna una ruta de acceso virtual, absoluta o relativa. (Heredado de Control) |
MemberwiseClone() |
Crea una copia superficial del Object actual. (Heredado de Object) |
OnBubbleEvent(Object, EventArgs) |
Determina si el evento del control de servidor se pasa a la jerarquía de control de servidor de la interfaz de usuario (UI) de la página. (Heredado de Control) |
OnDataBinding(EventArgs) |
Genera el evento DataBinding. (Heredado de Control) |
OnInit(EventArgs) |
Desencadena el evento Init e inicializa el control. |
OnLoad(EventArgs) |
Genera el evento Load. (Heredado de Control) |
OnPreRender(EventArgs) |
Genera el evento PreRender. (Heredado de Control) |
OnUnload(EventArgs) |
Genera el evento Unload. (Heredado de Control) |
OpenFile(String) |
Obtiene un objeto Stream utilizado para leer un archivo. (Heredado de Control) |
RaiseBubbleEvent(Object, EventArgs) |
Asigna los orígenes del evento y su información al control principal del control. (Heredado de Control) |
RemovedControl(Control) |
Se llama después de quitar un control secundario de la colección Controls del objeto Control. (Heredado de Control) |
Render(HtmlTextWriter) |
Envía el contenido del control de servidor al objeto HtmlTextWriter proporcionado, que escribe el contenido que se representará en el cliente. (Heredado de Control) |
RenderChildren(HtmlTextWriter) |
Envía el contenido de los elementos secundarios de un control de servidor a un objeto HtmlTextWriter especificado, que escribe el contenido que se va a representar en el cliente. (Heredado de Control) |
RenderControl(HtmlTextWriter) |
Envía el contenido de control del servidor a un objeto HtmlTextWriter proporcionado y almacena información de seguimiento sobre el control si está habilitado el seguimiento. (Heredado de Control) |
RenderControl(HtmlTextWriter, ControlAdapter) |
Coloca el contenido de un control de servidor en un objeto HtmlTextWriter proporcionado, utilizando un objeto ControlAdapter proporcionado. (Heredado de Control) |
ResolveAdapter() |
Obtiene el adaptador de controles que se encarga de representar el control especificado. (Heredado de Control) |
ResolveClientUrl(String) |
Obtiene una dirección URL que el explorador puede utilizar. (Heredado de Control) |
ResolveUrl(String) |
Convierte una dirección URL en una que el cliente solicitante pueda utilizar. (Heredado de Control) |
SaveControlState() |
Guarda los cambios de estado del control de servidor que se produjeron desde la hora en que la página volvió a publicarse en el servidor. (Heredado de Control) |
SaveViewState() |
Guarda los cambios realizados en el estado de vista del control de servidor desde que la página volvió a publicarse en el servidor. (Heredado de Control) |
SetDesignModeState(IDictionary) |
Establece los datos en tiempo de diseño para un control. (Heredado de Control) |
SetRenderMethodDelegate(RenderMethod) |
Asigna un delegado de controlador de eventos para representar el control de servidor y su contenido en el control principal. (Heredado de Control) |
SetTraceData(Object, Object) |
Establece datos de seguimiento para el seguimiento en tiempo de diseño de los datos de representación, para lo que usa la clave y el valor de los datos de seguimiento. (Heredado de Control) |
SetTraceData(Object, Object, Object) |
Establece datos de seguimiento para el seguimiento en tiempo de diseño de los datos de representación, para lo que usa el objeto del que se ha realizado seguimiento, así como la clave y el valor de los datos de seguimiento. (Heredado de Control) |
ToString() |
Devuelve una cadena que representa el objeto actual. (Heredado de Object) |
TrackViewState() |
Origina el seguimiento de los cambios del estado de vista del control de servidor de manera que se puedan almacenar en el objeto StateBag del control de servidor. Este objeto es accesible a través de la propiedad ViewState. (Heredado de Control) |
Eventos
DataBinding |
Se produce cuando el control de servidor se enlaza a un origen de datos. (Heredado de Control) |
Disposed |
Se produce cuando un control de servidor se libera de la memoria, lo que constituye la última fase del período de duración de un control de servidor cuando se solicita una página ASP.NET. (Heredado de Control) |
Init |
Tiene lugar al inicializar el control de servidor, que es el primer paso en su ciclo de vida. (Heredado de Control) |
Load |
Se produce cuando el control de servidor se carga en el objeto Page. (Heredado de Control) |
PreRender |
Se produce una vez que se carga el objeto Control, pero antes de su representación. (Heredado de Control) |
Unload |
Se produce cuando el control de servidor se descarga de la memoria. (Heredado de Control) |
Implementaciones de interfaz explícitas
IControlBuilderAccessor.ControlBuilder |
Para obtener una descripción de este miembro, vea ControlBuilder. (Heredado de Control) |
IControlDesignerAccessor.GetDesignModeState() |
Para obtener una descripción de este miembro, vea GetDesignModeState(). (Heredado de Control) |
IControlDesignerAccessor.SetDesignModeState(IDictionary) |
Para obtener una descripción de este miembro, vea SetDesignModeState(IDictionary). (Heredado de Control) |
IControlDesignerAccessor.SetOwnerControl(Control) |
Para obtener una descripción de este miembro, vea SetOwnerControl(Control). (Heredado de Control) |
IControlDesignerAccessor.UserData |
Para obtener una descripción de este miembro, vea UserData. (Heredado de Control) |
IDataBindingsAccessor.DataBindings |
Para obtener una descripción de este miembro, vea DataBindings. (Heredado de Control) |
IDataBindingsAccessor.HasDataBindings |
Para obtener una descripción de este miembro, vea HasDataBindings. (Heredado de Control) |
IExpressionsAccessor.Expressions |
Para obtener una descripción de este miembro, vea Expressions. (Heredado de Control) |
IExpressionsAccessor.HasExpressions |
Para obtener una descripción de este miembro, vea HasExpressions. (Heredado de Control) |
IParserAccessor.AddParsedSubObject(Object) |
Para obtener una descripción de este miembro, vea AddParsedSubObject(Object). (Heredado de Control) |
Métodos de extensión
FindDataSourceControl(Control) |
Devuelve el origen de datos que está asociado al control de datos del control especificado. |
FindFieldTemplate(Control, String) |
Devuelve la plantilla de campo para la columna especificada en el contenedor de nomenclatura del control especificado. |
FindMetaTable(Control) |
Devuelve el objeto de metatabla para el control de datos contenedor. |