Esta documentación está archivada y no tiene mantenimiento.

WebPartManager (Clase)

Sirve como clase central del conjunto de controles de elementos Web y administra todos los controles de elementos Web, la funcionalidad y los eventos que se producen en una página Web.

Espacio de nombres: System.Web.UI.WebControls.WebParts
Ensamblado: System.Web (en system.web.dll)

[BindableAttribute(false)] 
public class WebPartManager : Control, INamingContainer, IPersonalizable
/** @attribute BindableAttribute(false) */ 
public class WebPartManager extends Control implements INamingContainer, IPersonalizable
BindableAttribute(false) 
public class WebPartManager extends Control implements INamingContainer, IPersonalizable
No aplicable.

El control WebPartManager actúa como concentrador o centro de control de una aplicación de elementos Web. Tiene que haber una, y sólo una, instancia del control WebPartManager en cada página que utilice los controles de elementos Web. Como ocurre con la mayoría de los aspectos de las aplicaciones de elementos Web, el control WebPartManager sólo trabaja con usuarios autenticados. Por lo demás, su funcionalidad trabaja casi completamente con controles de servidor que residen en zonas de elementos Web que heredan de la clase WebZone. Los controles de servidor que residen en una página fuera de estas zonas pueden tener muy poca funcionalidad de elementos Web o interacción con el control WebPartManager.

Como concentrador para la funcionalidad de los elementos Web en una página, el control WebPartManager realiza los tipos de tareas descritos en la tabla siguiente.

Categoría de tareas

Lo que el control hace

Seguimiento de controles de elementos Web

Realiza el seguimiento de muchos tipos diferentes de controles en una página que proporciona características de elementos Web, incluidos controles WebPart, conexiones, zonas, etc.

Agregar y quitar controles de elementos Web

Proporciona los métodos para agregar, eliminar y cerrar los controles WebPart en una página.

Administrar conexiones

Crea conexiones entre los controles y supervisa las conexiones, así como los procesos de agregar y quitar.

Personalizar controles y páginas

Permite a los usuarios mover controles a ubicaciones diferentes en una página e inicia vistas en las cuales los usuarios pueden modificar la apariencia, propiedades y comportamiento de los controles. Mantiene la configuración de personalización específica del usuario en cada página.

Alternar entre vistas de página diferentes

Cambia entre diferentes vistas especializadas de una página, de modo que los usuarios pueden realizar ciertas tareas como cambiar el diseño o modificar controles de la misma.

Provocar eventos de ciclo de vida de elementos Web

Define y produce los eventos de ciclo de vida de los controles de elementos Web y permite a los desarrolladores controlarlos, por ejemplo cuando se agregan, mueven, conectan o eliminan controles.

Habilitar la importación y exportación de controles

Exporta secuencias XML que contienen el estado de las propiedades de los controles WebPart y permite a los usuarios importar archivos cómodamente cuando personalizan controles complejos en otras páginas o sitios.

La clase WebPartManager tiene un conjunto grande de propiedades. Por coherencia con la función de WebPartManager de realizar el seguimiento de otros controles, dispone de varias propiedades que hacen referencia a colecciones de controles de elementos Web u otros objetos especiales de elementos Web. Las propiedades AvailableTransformers, Connections, Controls, DisplayModes, DynamicConnections, SupportedDisplayModes, WebParts y Zones son todas colecciones que el control WebPartManager utiliza para su seguimiento y otras tareas de administración.

Otro grupo de propiedades contiene advertencias personalizables que se aplican en ciertos escenarios que aparecen en una aplicación de elementos Web. Entre ellas se incluyen las propiedades CloseProviderWarning, DeleteWarning y ExportSensitiveDataWarning.

La clase WebPartManager reemplaza algunas de sus propiedades heredadas base, que son utilizadas por muchos controles de servidor Web. Entre ellas se incluyen las propiedades EnableTheming, SkinID y Visible.

Por último, hay un grupo de propiedades que son útiles para tener acceso al estado actual de la aplicación. La propiedad DisplayMode indica el modo de presentación actual en que está la página. La propiedad EnableClientScript indica si se permite que un control represente secuencias de comandos en el cliente, lo cual resulta adecuado en el caso de que los usuarios pudieran utilizar exploradores con distintas capacidades o tener desactivadas las secuencias de comandos. La propiedad Internals es conveniente para hacer referencia a una clase de utilidad que contenga llamadas a varios métodos de elementos Web importantes que se emplean en casos de extensibilidad. Ocultando las llamadas a estos métodos en una clase independiente (la clase WebPartManagerInternals), se simplifica la propia API de la clase WebPartManager. La propiedad Personalization proporciona acceso a los objetos de personalización que almacenan la configuración de personalización de los usuarios y conservan los datos en un almacenamiento permanente. La propiedad SelectedWebPart indica qué control WebPart de una página está seleccionado actualmente por el usuario o la aplicación. La propiedad System.Web.UI.WebControls.WebParts.IPersonalizable.IsDirty indica si los datos de personalización de un control WebPart han cambiado.

El control WebPartManager contiene cinco modos de presentación integrados o vistas de una página Web. Los desarrolladores pueden ampliar esta característica y crear modos de presentación personalizados extendiendo los tipos como las clases WebZone o ToolZone. Los usuarios pueden cambiar los diversos modos de presentación de una página, siempre y cuando los tipos apropiados de controles que corresponden a un modo de presentación dado estén presentes en la página.

NotaNota:

Es posible extender esta característica de modo que los usuarios puedan cambiar a un modo de presentación personalizado sin necesidad de tener la zona correspondiente en la página. Sin embargo, el comportamiento predeterminado es que los modos de presentación corresponden a las zonas.

Los campos públicos representan los modos de presentación estándar en la clase WebPartManager. En la tabla siguiente se resumen los campos y los modos de presentación a los que hacen referencia. Como se mencionó anteriormente, la propiedad DisplayMode siempre hace referencia al modo de presentación actual de una página y la propiedad SupportedDisplayModes contiene el conjunto de modos de presentación que es posible en una página determinada, dado el tipo de zonas presentes en la misma.

Campo

Detalles del modo de presentación

BrowseDisplayMode

Vista de usuario normal de una página Web; es el valor predeterminado y el modo de presentación más común.

DesignDisplayMode

Vista en la que los usuarios pueden reorganizar o eliminar los controles para cambiar el diseño de página.

EditDisplayMode

Vista en la que se hace visible una interfaz de usuario de edición; los usuarios pueden modificar la apariencia, propiedades y comportamiento de los controles que se muestran en el modo de exploración normal.

CatalogDisplayMode

Vista en la que se hace visible una interfaz de usuario del catálogo; los usuarios pueden agregar controles de los catálogos disponibles a una página.

ConnectDisplayMode

Vista en la que se hace visible una interfaz de usuario de conexión; los usuarios pueden conectar, administrar o desconectar las conexiones entre los controles.

El control WebPartManager también contiene varios eventos que son esenciales en el ciclo de vida de las páginas y controles de elementos Web. Estos eventos proporcionan el control de programación preciso sobre el comportamiento de los controles de elementos Web. La mayoría de los métodos pertenecen directamente a controles WebPart (u otros controles de servidor o usuario colocados en zonas WebPartZoneBase a fin de que puedan comportarse como controles WebPart). Sin embargo, unos pocos eventos pertenecen al estado o a las conexiones de la página. En la tabla siguiente se muestran los eventos disponibles y se resumen sus propósitos.

NotaNota:

En la tabla siguiente, la palabra "control" hace referencia en todos los casos a un control WebPart o a un control de servidor que resida en una zona y se ajuste con un objeto GenericWebPart en tiempo de ejecución.

Evento

Descripción

AuthorizeWebPart

Se produce justo antes de agregar un control a una página para comprobar que tiene autorización.

ConnectionsActivated

Se produce después de que se han activado todas las conexiones en una página.

ConnectionsActivating

Se produce justo antes del proceso de activar todas las conexiones en una página.

DisplayModeChanged

Se produce después de que el modo de presentación actual de una página ha cambiado.

DisplayModeChanging

Se produce justo antes del proceso de cambiar el modo de presentación de una página.

SelectedWebPartChanged

Se produce después de cancelar la selección de un control.

SelectedWebPartChanging

Se produce justo antes del proceso de cancelar la selección de un control.

WebPartAdded

Se produce después de agregar un control a una zona.

WebPartAdding

Se produce justo antes del proceso de agregar un control a una zona.

WebPartClosed

Se produce después de cerrar un control (quitarlo de una página).

WebPartClosing

Se produce justo antes del proceso de cerrar un control.

WebPartDeleted

Se produce después de eliminar permanentemente una instancia de un control dinámico (uno creado mediante programación o agregado desde un catálogo).

WebPartDeleting

Se produce justo antes del proceso de eliminar un control dinámico.

WebPartMoved

Se produce después de mover un control dentro de su zona o a otra zona.

WebPartMoving

Se produce justo antes del proceso de mover un control.

WebPartsConnected

Se produce después de que dos controles seleccionados para la participación en una conexión han establecido la conexión.

WebPartsConnecting

Se produce justo antes del proceso de conectar dos controles.

WebPartsDisconnected

Se produce después de desconectar dos controles conectados.

WebPartsDisconnecting

Se produce justo antes del proceso de desconectar dos controles.

El control WebPartManager tiene varios métodos para administrar páginas de elementos Web. Una gran parte de los métodos (que no se muestran aquí) son métodos cuyos nombres toman la forma OnNombreEvento. Estos métodos provocan normalmente su evento asociado y proporcionan un controlador de tipo WebPartEventHandler al evento. Los desarrolladores que heredan de la clase WebPartManager pueden reemplazar la mayoría de estos métodos. Además, los desarrolladores de páginas pueden proporcionar controladores personalizados para los eventos asociados a estos métodos. Por ejemplo, en el caso del evento WebPartAdded, un desarrollador de páginas podría agregar un atributo OnWebPartAdded al elemento <asp:webpartmanager> en el formato de una página Web y, a continuación, asignar un nombre de método personalizado al atributo a fin de proporcionar un controlador personalizado para el evento. El atributo corresponde al método OnWebPartAdded y este modelo básico de controlador de eventos funciona con la mayoría de los eventos de elementos Web y sus métodos asociados.

Además, el control WebPartManager tiene métodos concretos para la tarea de administrar los controles WebPart (y controles de servidor o de usuario utilizados como controles WebPart). Estos métodos incluyen AddWebPart, AuthorizeWebPart, CloseWebPart, CopyWebPart, CreateWebPart, DeleteWebPart, DisconnectWebPart, BeginWebPartEditing, EndWebPartEditing, ExportWebPart, GetGenericWebPart, ImportWebPart, IsAuthorized y MoveWebPart.

Otro conjunto de métodos está especializado en conexiones. Entre ellos se incluyen métodos como ActivateConnections, BeginWebPartConnecting, CanConnectWebParts, ConnectWebParts, CreateAvailableTransformers, DisconnectWebPart, DisconnectWebParts, EndWebPartConnecting, GetConsumerConnectionPoints y GetProviderConnectionPoints.

Finalmente, algunos métodos WebPartManager se centran en la funcionalidad de personalización. Éstos incluyen CreatePersonalization, LoadControlState, SaveCustomPersonalizationState, SetPersonalizationDirty, System.Web.UI.WebControls.WebParts.IPersonalizable.Load, System.Web.UI.WebControls.WebParts.IPersonalizable.Save y SaveControlState.

Para obtener más información sobre otros métodos de WebPartManager que son accesibles a través de la propiedad Internals, consulte la documentación de la clase WebPartManagerInternals.

Notas para los herederos: El control WebPartManager está diseñado para extenderse. Como este control es muy importante para las aplicaciones de elementos Web, cuando desee extender un tipo o control específico en el conjunto de controles de elementos Web, en muchos casos también debe extender la clase WebPartManager, ya que es probable que tenga alguna propiedad o método necesarios para que el tipo personalizado funcione en el contexto de una aplicación de elementos Web. En la documentación de referencia de elementos Web (consulte System.Web.UI.WebControls.WebParts), cuando se describe cómo extender un tipo de elementos Web, se menciona con frecuencia qué es necesario hacer para extender también la clase WebPartManager o se muestra cómo extenderla en un ejemplo de código.

TemaUbicación
Cómo: Declarar una conexión estática entre dos controles de elementos WebGenerar aplicaciones Web ASP .NET en Visual Studio
Cómo: Deshabilitar la personalización de elementos WebGenerar aplicaciones Web ASP .NET en Visual Studio
Cómo: Declarar una conexión estática entre dos controles de elementos WebGenerar aplicaciones Web ASP .NET
Cómo: Deshabilitar la personalización de elementos WebGenerar aplicaciones Web ASP .NET
Cómo: Declarar una conexión estática entre dos controles de elementos WebGenerar aplicaciones Web ASP .NET en Visual Studio
Cómo: Deshabilitar la personalización de elementos WebGenerar aplicaciones Web ASP .NET en Visual Studio

En el ejemplo de código siguiente se muestra cómo utilizar el control WebPartManager mediante declaración y programación.

El ejemplo de código tiene cuatro partes:

  • Un control de usuario que permite cambiar los modos de presentación en una página de elementos Web.

  • Una página Web que contiene dos controles WebPart personalizados que se pueden conectar y un elemento <asp:webpartmanager>.

  • Un archivo de código fuente que contiene dos controles WebPart personalizados y una interfaz personalizada.

  • Una explicación de cómo funciona el ejemplo en un explorador.

El control de usuario tiene un control de lista desplegable que muestra los modos de presentación posibles en una página, dados los controles de elementos Web que están presentes en la misma. En la página Web para este código de ejemplo, este control de usuario está declarado bajo el elemento WebPartManager en el formato de la página y existe una directiva Register junto a la parte superior de la página Web para registrar el control. Para obtener más información sobre los modos de presentación y una descripción de su código fuente, vea Tutorial: Cambiar los modos de presentación en una página de elementos Web.

<%@ 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="&nbsp;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>

El formato declarativo de la página Web contiene directivas Register para el control de usuario y los controles personalizados. Hay un elemento <asp:webpartmanager>, un elemento <asp:webpartzone> que contiene los controles personalizados y un elemento <asp:connectionszone>. La página también contiene código en línea que controla los eventos relacionados con la conexión para el control WebPartManager; el efecto de este código se puede ver al conectar y desconectar controles.

<%@ Page Language="C#" %>
<%@ register TagPrefix="uc1" 
  TagName="DisplayModeMenuCS" 
  Src="DisplayModeMenuCS.ascx" %>
<%@ register tagprefix="aspSample" 
  Namespace="Samples.AspNet.CS.Controls" 
  Assembly="ConnectionSampleCS" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
 
  private void UpdateLabelData(int wpCount, int connCount)
  {
    Label1.Text = "WebPart Control Count:  " + wpCount.ToString();
    Label2.Text = "Connections Count: " + connCount.ToString();
  }

  protected void WebPartManager1_WebPartsConnected(object sender, WebPartConnectionsEventArgs e)
  {
    UpdateLabelData(WebPartManager1.WebParts.Count,
      WebPartManager1.Connections.Count);
  }

  protected void WebPartManager1_WebPartsDisconnected(object sender, WebPartConnectionsEventArgs e)
  {
    UpdateLabelData(WebPartManager1.WebParts.Count,
      WebPartManager1.Connections.Count);
  }
  
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
    <title>ASP.NET Example</title>
</head>
<body>
    <form id="form1" runat="server">
      <!-- Reference the WebPartManager control. -->
      <asp:WebPartManager ID="WebPartManager1" runat="server"  
        OnWebPartsConnected="WebPartManager1_WebPartsConnected" 
        OnWebPartsDisconnected="WebPartManager1_WebPartsDisconnected" />
    <div>
      <uc1:DisplayModeMenuCS ID="displaymode1" runat="server" />
      <!-- Reference consumer and provider controls in a zone. -->
      <asp:WebPartZone ID="WebPartZone1" runat="server">
        <ZoneTemplate>
          <aspSample:ZipCodeWebPart ID="zip1" 
            runat="server" 
            Title="Zip Code Control"/>
          <aspSample:WeatherWebPart ID="weather1" 
            runat="server" 
            Title="Weather Control" />
        </ZoneTemplate>
      </asp:WebPartZone>
      <hr />
      <asp:Label ID="Label1" runat="server" Text=""></asp:Label>
      <br />
      <asp:Label ID="Label2" runat="server" Text=""></asp:Label>
      <!-- Add a ConnectionsZone so users can connect controls. -->
      <asp:ConnectionsZone ID="ConnectionsZone1" runat="server" />
    </div>
    </form>
</body>
</html>

La tercera parte del ejemplo es el código fuente de los controles. Tenga en cuenta que hay una interfaz denominada IZipCode que se implementa en la clase ZipCodeWebPart. Esta clase tiene un método de devolución de llamada especial denominado ProvideIZipCode que actúa como proveedor. El otro tipo, denominado WeatherWebPart, también se implementa con un método especial denominado GetIZipCode que permite que el control actúe como consumidor del otro control.

Para que el ejemplo de código funcione, es necesario compilar este código fuente. Se puede compilar de manera explícita y colocar el ensamblado resultante en la carpeta Bin del sitio Web o en la Caché de ensamblados global. El código fuente también se puede colocar en la carpeta App_Code del sitio Web, donde se compilará dinámicamente en tiempo de ejecución. En este código de ejemplo se asume que ya se ha compilado el código fuente en un ensamblado y que la directiva Register de la página Web hace referencia al nombre de ensamblado. Para obtener un tutorial que muestra cómo compilar, vea Tutorial: Desarrollar y utilizar un control de servidor 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")]
    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 (input.Text != String.Empty)
      {
        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")]
    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);
    }

  }
}

Después de cargar la página Web en un explorador, haga clic en el control de lista desplegable Modo de presentación y seleccione Conectar para cambiar la página al modo de conexión. El modo de conexión utiliza el elemento <asp:connectionszone> que le permite crear conexiones entre controles. En modo de conexión, haga clic en la flecha abajo en la barra de título del control ZIP Code (Código postal) para activar el menú de verbos y, a continuación, haga clic en Conectar. Después de que aparezca la interfaz de usuario de conexión, haga clic en el vínculo Crear una conexión para un consumidor. Se muestra una celda que tiene un control de lista desplegable. Seleccione Weather Control (Control meteorológico) en la lista desplegable y, a continuación, haga clic en Conectar para finalizar la conexión de los dos controles. Haga clic en Cerrar y, a continuación, utilice la lista desplegable Modo de presentación para devolver la página al modo de exploración normal. A continuación, puede escribir un código postal; el control consumidor se actualizará con el valor que especifique. Como la propiedad ZipCode estaba marcada con el atributo Personalizable en el código fuente, este valor de propiedad persistirá entre distintas sesiones del explorador, ya que se guarda el valor introducido por el usuario. Un control consumidor más sofisticado podría tomar la información de código postal, buscar información meteorológica basándose en ese código y mostrarla a un usuario.

  • AspNetHostingPermission  para trabajar en un entorno alojado en host. Valor de la petición: LinkDemand; valor del permiso: Minimal
  • AspNetHostingPermission  para trabajar en un entorno alojado en host. Valor de la petición: InheritanceDemand; valor del permiso: Minimal

System.Object
   System.Web.UI.Control
    System.Web.UI.WebControls.WebParts.WebPartManager

Los miembros estáticos públicos (Shared en Visual Basic) de este tipo son seguros para la ejecución de subprocesos. No se garantiza que los miembros de instancias sean seguros para la ejecución de subprocesos.

Windows 98, Windows 2000 Service Pack 4, Windows CE, Windows Millennium, Windows Mobile para Pocket PC, Windows Mobile para Smartphone, Windows Server 2003, Windows XP Media Center, Windows XP Professional x64, Windows XP SP2, Windows XP Starter

Microsoft .NET Framework 3.0 es compatible con Windows Vista, Microsoft Windows XP SP2 y Windows Server 2003 SP1.

.NET Framework

Compatible con: 3.0, 2.0
Mostrar: