Поделиться через


ProxyWebPartManager Класс

Определение

Предоставляет разработчикам возможность объявлять статические подключения на странице содержимого, когда WebPartManager элемент управления был объявлен на связанной главной странице страницы содержимого.

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
Наследование
ProxyWebPartManager
Атрибуты

Примеры

В следующем примере кода показано, как использовать ProxyWebPartManager класс для объявления статических подключений на страницах содержимого в приложении, использующего главные страницы. Пример состоит из пяти частей:

  • Пользовательский элемент управления, позволяющий изменить режим отображения веб-частей на странице.

  • Исходный код интерфейса и два WebPart элемента управления, действующие в качестве поставщика и потребителя для подключения.

  • Эталонная веб-страница, на которую размещается элемент управления пользователем, страницы содержимого и WebPartManager элемент управления для приложения.

  • Веб-страница содержимого, на которую размещается ProxyWebPartManager элемент управления, два пользовательских WebPart элемента управления и статическое подключение для подключения двух элементов управления.

  • Описание запуска примера страницы.

Первая часть этого примера кода — это пользовательский элемент управления, позволяющий пользователям изменять режимы отображения на веб-странице. Сохраните следующий исходный код в ASCX-файле, указав ему имя файла, назначенное Src атрибуту директивы для этого пользовательского Register элемента управления, который находится в верхней части главной страницы размещения. Дополнительные сведения о режимах отображения и описании исходного кода в этом элементе управления см. в пошаговом руководстве. Изменение режимов отображения на странице веб-частей.

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

Второй частью примера кода является исходный код для интерфейса и элементов управления. Исходный файл содержит простой интерфейс с именем IZipCode. Существует также WebPart класс с именем ZipCodeWebPart , который реализует интерфейс и выступает в качестве элемента управления поставщиком. Его ProvideIZipCode метод — это метод обратного вызова, реализующий единственный член интерфейса. Метод просто возвращает экземпляр интерфейса. Обратите внимание, что метод помечается атрибутом ConnectionProvider в его метаданных. Это механизм идентификации метода в качестве метода обратного вызова для точки подключения поставщика. Другой WebPart класс называется WeatherWebPart, и он выступает в качестве потребителя для подключения. Этот класс имеет метод с именем GetZipCode , который получает экземпляр IZipCode интерфейса из элемента управления поставщиком. Обратите внимание, что этот метод помечается как метод точки подключения потребителя атрибутом ConnectionConsumer в его метаданных.

Для запуска примера кода необходимо скомпилировать этот исходный код. Вы можете скомпилировать его явным образом и поместить полученную сборку в папку bin веб-сайта или глобальный кэш сборок. Кроме того, исходный код можно поместить в папку App_Code сайта, где он будет динамически скомпилирован во время выполнения. В этом примере кода используется динамическая компиляция. Пошаговое руководство по компиляции см. в руководстве по разработке и использованию пользовательского веб-сервера.

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

Третья часть примера кода — эталонная страница. Вы должны взять следующий исходный код и сохранить его в файле, именуя его MasterPageCS.master или MasterPageVB.master (в зависимости от используемого языка). Обратите внимание, что главная страница содержит Register директиву для регистрации пользовательского элемента управления и ссылается на сам элемент управления пользователем в тексте страницы. Главная страница также объявляет один <asp:webpartmanager> элемент, используемый для этой страницы, и все связанные страницы содержимого. Наконец, на главной <asp: contentplaceholder> странице есть элемент, который объявляет точку на странице, в которой вставляется страница содержимого.

<%@ 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>

Четвертая часть примера кода — это страница содержимого. Скопируйте следующий исходный код и сохраните его в файле с расширением .aspx. Обратите внимание, что его Page директива MasterFile содержит атрибут для ссылки на главную страницу. Кроме того, на этой странице есть Register директива для регистрации файла в папке App_Code, содержащей динамически скомпилированные пользовательские WebPart элементы управления, участвующие в соединении. <asp:content> В тегах страницы есть <asp:proxywebpartmanager> элемент с дочерним элементом, который, в свою очередь, имеет дочерний <staticconnections><asp:webpartconnection> элемент для объявления сведений о соединении. <script> В тегах на странице Button1_Click метод добавляет код, который обращается к основному элементу управления на главной WebPartManager странице и ProxyWebPartManager элементу управления на странице содержимого, а также записывает некоторые сведения на страницу.

<%@ 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>

После загрузки страницы в браузере нажмите кнопку WebPartManager Information и просмотрите сведения об WebPartManager элементе управления на главной странице и ProxyWebPartManager элемент управления на странице содержимого. Например, обратите внимание, что оба они имеют одинаковое количество в соответствующих свойствах, которые отслеживают статические подключения ( StaticConnections свойство). Обратите внимание также, что хотя элемент WebPartManager управления имеет свойство, отслеживающее количество управляемых WebPart элементов управления, ProxyWebPartManager элемент управления не имеет WebParts такого свойства, так как его единственное назначение заключается в том, чтобы содержать статические подключения.

Комментарии

Элемент ProxyWebPartManager управления существует для конкретного сценария объявления статических подключений на страницах содержимого, когда WebPartManager элемент управления уже объявлен на главной странице.

При проектировании веб-страница, использующая элементы управления веб-частей, должна содержать один (и только один) WebPartManager элемент управления, который управляет всеми элементами управления веб-частями на странице. Когда приложение веб-частей использует главные страницы, обычно размещает WebPartManager элемент управления на главной странице, так как все страницы содержимого объединяются с главной страницей во время выполнения, а единый WebPartManager элемент управления будет управлять всеми элементами управления веб-частей со всех страниц содержимого. Однако, когда разработчики хотят объявить статические подключения на страницах содержимого такого приложения, они могут столкнуться с ограничением. Подключение статических веб-частей можно объявить только путем добавления <asp:webpartconnection> элемента в качестве дочернего <staticconnections> элемента, который сам по себе должен быть дочерним элементом <asp:webpartmanager> элемента. Но поскольку WebPartManager элемент управления уже объявлен на главной странице и является одним из разрешенных WebPartManager элементов управления, разработчики не могут объявлять дополнительные WebPartManager элементы управления на страницах содержимого для добавления статических подключений.

Элемент ProxyWebPartManager управления занимает место WebPartManager элемента управления в этом сценарии. Разработчики объявляют <asp:proxywebpartmanager> элемент вместо <asp:webpartmanager> элемента на своих страницах содержимого и затем могут объявлять статические соединения в качестве дочерних элементов. Во время выполнения подключения в элементе управления просто добавляются StaticConnections в ProxyWebPartManager коллекцию WebPartManager элемента управления и обрабатываются как любое другое соединение.

Так как элемент ProxyWebPartManager управления используется только в этом конкретном сценарии разработки, он имеет более ограниченные функциональные возможности, чем WebPartManager класс. На самом деле, ProxyWebPartManager хотя элемент управления выступает в качестве прокси-сервера, который содержит статические подключения для элемента управления на страницах содержимого WebPartManagerWebPartManager, он не наследуется от элемента управления. Он наследует непосредственно от Control класса и переопределяет только несколько базовых элементов. Свойства EnableThemingVisibleSkinID переопределяются и присваиваются значениям, которые препятствуют их использованию. Другие унаследованные свойства переопределяются для настройки поведения во время разработки, но в противном случае они имеют то же поведение, что и базовые свойства. К ним относятся Controls и ClientID свойства. Наконец, ProxyWebPartManager класс имеет одно ненаследуемое свойство. Свойство StaticConnections возвращает собственную коллекцию статических соединений ( ProxyWebPartConnectionCollection объект).

Что касается методов, ProxyWebPartManager класс аналогично переопределяет только несколько методов, в основном для ограничения их использования. Унаследованный Focus метод становится непригодным для использования путем вызова исключения. Метод CreateControlCollection всегда возвращает пустую коллекцию элементов управления, которая влияет на то, что она не сможет содержать коллекцию элементов управления. Наконец, OnInit метод вызывает базовый метод, а затем назначает коллекцию соединений, на которые StaticConnections ссылается свойство WebPartManager.StaticConnectionsWebPartManager элемента управления. Это позволяет свернуть все статические подключения, объявленные во всех страницах содержимого, и сделать их частью коллекции подключений, поддерживаемой WebPartManager элементом управления на главной странице.

Конструкторы

Имя Описание
ProxyWebPartManager()

Инициализирует новый экземпляр класса ProxyWebPartManager.

Свойства

Имя Описание
Adapter

Возвращает адаптер, зависящий от браузера, для элемента управления.

(Унаследовано от Control)
AppRelativeTemplateSourceDirectory

Возвращает или задает относительный к приложению виртуальный каталог Page объекта или UserControl объекта, содержащего этот элемент управления.

(Унаследовано от Control)
BindingContainer

Возвращает элемент управления, содержащий привязку данных этого элемента управления.

(Унаследовано от Control)
ChildControlsCreated

Возвращает значение, указывающее, были ли созданы дочерние элементы управления сервера.

(Унаследовано от Control)
ClientID

Возвращает идентификатор элемента управления для разметки HTML, созданной ASP.NET.

ClientIDMode

Возвращает или задает алгоритм, используемый для создания значения ClientID свойства.

(Унаследовано от Control)
ClientIDSeparator

Возвращает значение символа, представляющее символ разделителя, используемый в свойстве ClientID .

(Унаследовано от Control)
Context

HttpContext Возвращает объект, связанный с серверным элементом управления для текущего веб-запроса.

(Унаследовано от Control)
Controls

ControlCollection Возвращает объект, представляющий дочерние элементы управления для указанного серверного элемента управления в иерархии пользовательского интерфейса.

DataItemContainer

Возвращает ссылку на контейнер именования, если контейнер именования реализует IDataItemContainer.

(Унаследовано от Control)
DataKeysContainer

Возвращает ссылку на контейнер именования, если контейнер именования реализует IDataKeysControl.

(Унаследовано от Control)
DesignMode

Возвращает значение, указывающее, используется ли элемент управления на поверхности конструктора.

(Унаследовано от Control)
EnableTheming

Переопределяет базовое свойство, чтобы предотвратить использование тем.

EnableViewState

Возвращает или задает значение, указывающее, сохраняет ли серверный элемент управления состояние представления и состояние представления всех дочерних элементов управления, содержащихся в нем, для запрашивающего клиента.

(Унаследовано от Control)
Events

Возвращает список делегатов обработчика событий для элемента управления. Это свойство доступно только для чтения.

(Унаследовано от Control)
HasChildViewState

Получает значение, указывающее, имеют ли дочерние элементы управления текущего элемента управления серверным элементом управления какие-либо сохраненные параметры состояния представления.

(Унаследовано от Control)
ID

Возвращает или задает программный идентификатор, назначенный элементу управления сервером.

(Унаследовано от Control)
IdSeparator

Возвращает символ, используемый для разделения идентификаторов элемента управления.

(Унаследовано от Control)
IsChildControlStateCleared

Возвращает значение, указывающее, имеют ли элементы управления, содержащиеся в этом элементе управления, состояние элемента управления.

(Унаследовано от Control)
IsTrackingViewState

Возвращает значение, указывающее, сохраняется ли серверная система управления изменениями в состоянии представления.

(Унаследовано от Control)
IsViewStateEnabled

Возвращает значение, указывающее, включено ли состояние представления для этого элемента управления.

(Унаследовано от Control)
LoadViewStateByID

Возвращает значение, указывающее, участвует ли элемент управления в загрузке состояния ID представления вместо индекса.

(Унаследовано от Control)
NamingContainer

Возвращает ссылку на контейнер именования серверного элемента управления, который создает уникальное пространство имен для различения между элементами управления сервера с ID одинаковым значением свойства.

(Унаследовано от Control)
Page

Возвращает ссылку на Page экземпляр, содержащий серверный элемент управления.

(Унаследовано от Control)
Parent

Возвращает ссылку на родительский элемент управления сервера в иерархии элементов управления страницами.

(Унаследовано от Control)
RenderingCompatibility

Возвращает значение, указывающее версию ASP.NET, с которым будет совместим отрисованный HTML.

(Унаследовано от Control)
Site

Получает сведения о контейнере, на котором размещается текущий элемент управления при отрисовки на поверхности конструктора.

(Унаследовано от Control)
SkinID

Переопределяет базовое свойство, чтобы предотвратить назначение значения.

StaticConnections

Возвращает коллекцию статических подключений, объявленных в элементе <asp:proxywebpartmanager> на странице содержимого.

TemplateControl

Возвращает или задает ссылку на шаблон, содержащий этот элемент управления.

(Унаследовано от Control)
TemplateSourceDirectory

Возвращает виртуальный Page каталог или UserControl содержащий текущий серверный элемент управления.

(Унаследовано от Control)
UniqueID

Возвращает уникальный иерархический идентификатор для элемента управления сервером.

(Унаследовано от Control)
ValidateRequestMode

Возвращает или задает значение, указывающее, проверяет ли элемент управления входные данные клиента из браузера для потенциально опасных значений.

(Унаследовано от Control)
ViewState

Получает словарь сведений о состоянии, позволяющий сохранять и восстанавливать состояние представления серверного элемента управления в нескольких запросах на одну и ту же страницу.

(Унаследовано от Control)
ViewStateIgnoresCase

Возвращает значение, указывающее, является ли StateBag объект нечувствительным к регистру.

(Унаследовано от Control)
ViewStateMode

Возвращает или задает режим состояния представления этого элемента управления.

(Унаследовано от Control)
Visible

Переопределяет базовое свойство, чтобы предотвратить назначение значения.

Методы

Имя Описание
AddedControl(Control, Int32)

Вызывается после добавления дочернего Control элемента управления в Controls коллекцию объекта.

(Унаследовано от Control)
AddParsedSubObject(Object)

Уведомляет серверный элемент управления о том, что элемент , XML или HTML, был проанализирован, и добавляет элемент в объект элемента управления ControlCollection сервера.

(Унаследовано от Control)
ApplyStyleSheetSkin(Page)

Применяет свойства стиля, определенные в таблице стилей страницы, к элементу управления.

(Унаследовано от Control)
BeginRenderTracing(TextWriter, Object)

Начинает трассировку данных отрисовки во время разработки.

(Унаследовано от Control)
BuildProfileTree(String, Boolean)

Собирает сведения о серверном элементе управления и передает его Trace свойству, которое будет отображаться при включении трассировки для страницы.

(Унаследовано от Control)
ClearCachedClientID()

Задает кэшированное ClientID значение null.

(Унаследовано от Control)
ClearChildControlState()

Удаляет сведения о состоянии элемента управления для дочерних элементов управления сервера.

(Унаследовано от Control)
ClearChildState()

Удаляет сведения о состоянии представления и состояния элемента управления для всех дочерних элементов управления сервера.

(Унаследовано от Control)
ClearChildViewState()

Удаляет сведения о состоянии представления для всех дочерних элементов управления сервера.

(Унаследовано от Control)
ClearEffectiveClientIDMode()

ClientIDMode Задает свойство текущего экземпляра элемента управления и всех дочерних элементов управленияInherit.

(Унаследовано от Control)
CreateChildControls()

Вызывается платформой страницы ASP.NET, чтобы уведомить серверные элементы управления, использующие реализацию на основе композиции, чтобы создать все дочерние элементы управления, содержащиеся в подготовке к публикации обратной или отрисовки.

(Унаследовано от Control)
CreateControlCollection()

Переопределяет базовое свойство, чтобы запретить ProxyWebPartManager элементу управления содержать элементы управления.

DataBind()

Привязывает источник данных к вызываемой серверной системе управления и всем дочерним элементам управления.

(Унаследовано от Control)
DataBind(Boolean)

Привязывает источник данных к вызываемой серверной системе управления и всем его дочерним элементам управления с возможностью вызвать DataBinding событие.

(Унаследовано от Control)
DataBindChildren()

Привязывает источник данных к дочерним элементам управления сервера.

(Унаследовано от Control)
Dispose()

Позволяет элементу управления сервера выполнять окончательную очистку перед освобождением из памяти.

(Унаследовано от Control)
EndRenderTracing(TextWriter, Object)

Завершает трассировку времени разработки данных отрисовки.

(Унаследовано от Control)
EnsureChildControls()

Определяет, содержит ли серверный элемент управления дочерние элементы управления. Если это не так, он создает дочерние элементы управления.

(Унаследовано от Control)
EnsureID()

Создает идентификатор для элементов управления, которым не назначен идентификатор.

(Унаследовано от Control)
Equals(Object)

Определяет, равен ли указанный объект текущему объекту.

(Унаследовано от Object)
FindControl(String, Int32)

Выполняет поиск текущего контейнера именования для элемента управления сервером с указанным id и целым числом, указанным в pathOffset параметре, который помогает в поиске. Эту версию FindControl метода не следует переопределять.

(Унаследовано от Control)
FindControl(String)

Выполняет поиск текущего контейнера именования для элемента управления сервером с указанным id параметром.

(Унаследовано от Control)
Focus()

Переопределяет базовый метод, чтобы предотвратить вызов метода.

GetDesignModeState()

Возвращает данные во время разработки для элемента управления.

(Унаследовано от Control)
GetHashCode()

Служит хэш-функцией по умолчанию.

(Унаследовано от Object)
GetRouteUrl(Object)

Возвращает URL-адрес, соответствующий набору параметров маршрута.

(Унаследовано от Control)
GetRouteUrl(RouteValueDictionary)

Возвращает URL-адрес, соответствующий набору параметров маршрута.

(Унаследовано от Control)
GetRouteUrl(String, Object)

Получает URL-адрес, соответствующий набору параметров маршрута и имени маршрута.

(Унаследовано от Control)
GetRouteUrl(String, RouteValueDictionary)

Получает URL-адрес, соответствующий набору параметров маршрута и имени маршрута.

(Унаследовано от Control)
GetType()

Возвращает Type текущего экземпляра.

(Унаследовано от Object)
GetUniqueIDRelativeTo(Control)

Возвращает префиксированную часть UniqueID свойства указанного элемента управления.

(Унаследовано от Control)
HasControls()

Определяет, содержит ли серверный элемент управления какие-либо дочерние элементы управления.

(Унаследовано от Control)
HasEvents()

Возвращает значение, указывающее, регистрируются ли события для элемента управления или любых дочерних элементов управления.

(Унаследовано от Control)
IsLiteralContent()

Определяет, содержит ли серверный элемент управления только литеральное содержимое.

(Унаследовано от Control)
LoadControlState(Object)

Восстанавливает сведения о состоянии элемента управления из предыдущего запроса страницы, сохраненного методом SaveControlState() .

(Унаследовано от Control)
LoadViewState(Object)

Восстанавливает сведения о состоянии представления из предыдущего запроса страницы, сохраненного методом SaveViewState() .

(Унаследовано от Control)
MapPathSecure(String)

Извлекает физический путь, с которым сопоставляется виртуальный путь( абсолютный или относительный).

(Унаследовано от Control)
MemberwiseClone()

Создает неглубокую копию текущей Object.

(Унаследовано от Object)
OnBubbleEvent(Object, EventArgs)

Определяет, передается ли событие для элемента управления сервером пользовательского интерфейса страницы.

(Унаследовано от Control)
OnDataBinding(EventArgs)

Вызывает событие DataBinding.

(Унаследовано от Control)
OnInit(EventArgs)

Init Вызывает событие и инициализирует элемент управления.

OnLoad(EventArgs)

Вызывает событие Load.

(Унаследовано от Control)
OnPreRender(EventArgs)

Вызывает событие PreRender.

(Унаследовано от Control)
OnUnload(EventArgs)

Вызывает событие Unload.

(Унаследовано от Control)
OpenFile(String)

Возвращает используемый Stream для чтения файла.

(Унаследовано от Control)
RaiseBubbleEvent(Object, EventArgs)

Назначает любые источники события и ее сведения родительскому элементу управления.

(Унаследовано от Control)
RemovedControl(Control)

Вызывается после удаления дочернего Control элемента управления из Controls коллекции объекта.

(Унаследовано от Control)
Render(HtmlTextWriter)

Отправляет содержимое элемента управления сервера в предоставленный HtmlTextWriter объект, который записывает содержимое для отрисовки на клиенте.

(Унаследовано от Control)
RenderChildren(HtmlTextWriter)

Выводит содержимое дочерних элементов управления сервера в предоставленный HtmlTextWriter объект, который записывает содержимое для отрисовки на клиенте.

(Унаследовано от Control)
RenderControl(HtmlTextWriter, ControlAdapter)

Выводит содержимое элемента управления сервером в предоставленный HtmlTextWriter объект с помощью предоставленного ControlAdapter объекта.

(Унаследовано от Control)
RenderControl(HtmlTextWriter)

Выводит содержимое сервера управления в предоставленный HtmlTextWriter объект и сохраняет сведения о трассировке элемента управления, если трассировка включена.

(Унаследовано от Control)
ResolveAdapter()

Возвращает адаптер управления, отвечающий за отрисовку указанного элемента управления.

(Унаследовано от Control)
ResolveClientUrl(String)

Получает URL-адрес, который может использоваться браузером.

(Унаследовано от Control)
ResolveUrl(String)

Преобразует URL-адрес в url-адрес, который можно использовать на запрашиваемом клиенте.

(Унаследовано от Control)
SaveControlState()

Сохраняет все изменения состояния управления сервером, которые произошли с момента публикации страницы на сервер.

(Унаследовано от Control)
SaveViewState()

Сохраняет все изменения состояния представления представления сервера, которые произошли с момента отправки страницы на сервер.

(Унаследовано от Control)
SetDesignModeState(IDictionary)

Задает данные во время разработки для элемента управления.

(Унаследовано от Control)
SetRenderMethodDelegate(RenderMethod)

Назначает делегат обработчика событий для отрисовки элемента управления сервером и его содержимого в родительский элемент управления.

(Унаследовано от Control)
SetTraceData(Object, Object, Object)

Задает данные трассировки для трассировки данных отрисовки во время разработки, используя объект трассировки, ключ данных трассировки и значение данных трассировки.

(Унаследовано от Control)
SetTraceData(Object, Object)

Задает данные трассировки для трассировки данных отрисовки во время разработки, используя ключ данных трассировки и значение данных трассировки.

(Унаследовано от Control)
ToString()

Возвращает строку, представляющую текущий объект.

(Унаследовано от Object)
TrackViewState()

Вызывает отслеживание изменений состояния представления в серверном элементе управления, чтобы они могли храниться в объекте серверного элемента управления StateBag . Этот объект доступен через ViewState свойство.

(Унаследовано от Control)

События

Имя Описание
DataBinding

Происходит, когда серверный элемент управления привязывается к источнику данных.

(Унаследовано от Control)
Disposed

Происходит при освобождении серверного элемента управления из памяти, который является последним этапом жизненного цикла управления сервера при запросе страницы ASP.NET.

(Унаследовано от Control)
Init

Происходит при инициализации серверного элемента управления, который является первым шагом в его жизненном цикле.

(Унаследовано от Control)
Load

Происходит при загрузке серверного элемента управления в Page объект.

(Унаследовано от Control)
PreRender

Происходит после Control загрузки объекта, но до отрисовки.

(Унаследовано от Control)
Unload

Происходит при выгрузке серверного элемента управления из памяти.

(Унаследовано от Control)

Явные реализации интерфейса

Имя Описание
IControlBuilderAccessor.ControlBuilder

Описание этого элемента см. в разделе ControlBuilder.

(Унаследовано от Control)
IControlDesignerAccessor.GetDesignModeState()

Описание этого элемента см. в разделе GetDesignModeState().

(Унаследовано от Control)
IControlDesignerAccessor.SetDesignModeState(IDictionary)

Описание этого элемента см. в разделе SetDesignModeState(IDictionary).

(Унаследовано от Control)
IControlDesignerAccessor.SetOwnerControl(Control)

Описание этого элемента см. в разделе SetOwnerControl(Control).

(Унаследовано от Control)
IControlDesignerAccessor.UserData

Описание этого элемента см. в разделе UserData.

(Унаследовано от Control)
IDataBindingsAccessor.DataBindings

Описание этого элемента см. в разделе DataBindings.

(Унаследовано от Control)
IDataBindingsAccessor.HasDataBindings

Описание этого элемента см. в разделе HasDataBindings.

(Унаследовано от Control)
IExpressionsAccessor.Expressions

Описание этого элемента см. в разделе Expressions.

(Унаследовано от Control)
IExpressionsAccessor.HasExpressions

Описание этого элемента см. в разделе HasExpressions.

(Унаследовано от Control)
IParserAccessor.AddParsedSubObject(Object)

Описание этого элемента см. в разделе AddParsedSubObject(Object).

(Унаследовано от Control)

Методы расширения

Имя Описание
FindDataSourceControl(Control)

Возвращает источник данных, связанный с элементом управления данными для указанного элемента управления.

FindFieldTemplate(Control, String)

Возвращает шаблон поля для указанного столбца в контейнере именования указанного элемента управления.

FindMetaTable(Control)

Возвращает объект метатабли для содержащего элемента управления данными.

Применяется к

См. также раздел