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 класс для объявления статических подключений на страницах содержимого в приложении, использующего главные страницы. Пример состоит из пяти частей:
Пользовательский элемент управления, позволяющий изменить режим отображения веб-частей на странице.
Исходный код для интерфейса и два 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=" 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>
Вторая часть примера кода — исходный код для интерфейса и элементов управления. Исходный файл содержит простой интерфейс с именем 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 и просмотрите сведения об элементе WebPartManager управления на главной странице и элементе ProxyWebPartManager управления на странице содержимого. Например, обратите внимание, что оба они имеют одинаковое количество в соответствующих свойствах, которые отслеживают статические StaticConnections подключения (свойство ). Обратите также внимание, что хотя WebPartManager элемент управления имеет WebParts свойство , которое отслеживает количество управляемых WebPart им элементов управления, ProxyWebPartManager у него нет такого свойства, так как его единственное назначение заключается в том, чтобы содержать статические подключения.
Комментарии
Элемент ProxyWebPartManager управления существует для конкретного сценария объявления статических подключений на страницах содержимого, когда WebPartManager элемент управления уже объявлен на главной странице.
По умолчанию веб-страница, использующая элементы управления веб-частей, должна содержать один (и только один) WebPartManager элемент управления, который управляет всеми элементами управления веб-частей на странице. Когда приложение веб-частей использует главные страницы, элемент управления обычно помещается WebPartManager на эталонную страницу, так как все страницы содержимого объединяются с главной страницей во время выполнения и один WebPartManager элемент управления будет управлять всеми элементами управления веб-частей со всех страниц содержимого. Однако если разработчики хотят объявить статические подключения на страницах содержимого такого приложения, они могут столкнуться с ограничениями. Статическое соединение веб-частей можно объявить только путем добавления <asp:webpartconnection>
элемента в качестве дочернего <staticconnections>
элемента, который сам должен быть дочерним элементом <asp:webpartmanager>
элемента. Но поскольку WebPartManager элемент управления уже объявлен на главной странице и является разрешенным WebPartManager элементом управления, разработчики не могут объявлять дополнительные WebPartManager элементы управления на страницах содержимого для добавления статических подключений.
В ProxyWebPartManager этом сценарии элемент управления занимает место WebPartManager элемента управления . Разработчики объявляют <asp:proxywebpartmanager>
элемент вместо <asp:webpartmanager>
элемента на своих страницах содержимого, а затем могут объявлять статические подключения в качестве дочерних элементов. Во время выполнения подключения в элементе ProxyWebPartManager управления просто добавляются в StaticConnections коллекцию WebPartManager элемента управления и обрабатываются как любые другие подключения.
ProxyWebPartManager Поскольку элемент управления используется только в этом конкретном сценарии разработки, он имеет более ограниченные функциональные WebPartManager возможности, чем класс . На самом деле, хотя ProxyWebPartManager элемент управления выступает в качестве прокси-сервера для хранения статических подключений для WebPartManager элемента управления на страницах содержимого, он не наследуется от WebPartManager элемента управления . Он наследуется непосредственно от Control класса и переопределяет только несколько базовых элементов. Свойства EnableTheming, Visibleи SkinID переопределяются и присваиваются значениям, которые препятствуют их использованию. Другие унаследованные свойства переопределяются, чтобы настроить их поведение во время разработки, но в противном случае они имеют то же поведение, что и базовые свойства. К ним относятся 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 |
Получает коллекцию статических связей, объявленных в элементе |
TemplateControl |
Возвращает или задает ссылку на шаблон, содержащий этот элемент управления. (Унаследовано от Control) |
TemplateSourceDirectory |
Возвращает виртуальный каталог Page или UserControl, содержащий текущий серверный элемент управления. (Унаследовано от Control) |
UniqueID |
Возвращает уникальный идентификатор серверного элемента управления в иерархии. (Унаследовано от Control) |
ValidateRequestMode |
Возвращает или задает значение, указывающее, проверяет ли элемент управления полученный из браузера клиентский ввод на предмет потенциально опасных значений. (Унаследовано от Control) |
ViewState |
Возвращает словарь сведений о состоянии, позволяющих сохранять и восстанавливать состояние представления серверного элемента управления при нескольких запросах одной и той же страницы. (Унаследовано от Control) |
ViewStateIgnoresCase |
Возвращает значение, указывающее, является ли объект StateBag нечувствительным к регистру. (Унаследовано от Control) |
ViewStateMode |
Возвращает или задает режим состояния представления данного элемента управления. (Унаследовано от Control) |
Visible |
Переопределяет базовое свойство, чтобы запретить присваивание значений. |
Методы
AddedControl(Control, Int32) |
Вызывается после добавления дочернего элемента управления в коллекцию Controls объекта Control. (Унаследовано от Control) |
AddParsedSubObject(Object) |
Уведомляет серверный элемент управления, что элемент XML или HTML был проанализирован, и добавляет элемент в серверный элемент управления объекта ControlCollection. (Унаследовано от Control) |
ApplyStyleSheetSkin(Page) |
Применяет свойства стиля, определенные в таблице стилей страницы, к элементу управления. (Унаследовано от Control) |
BeginRenderTracing(TextWriter, Object) |
Запускает трассировку во время разработки данных отрисовки. (Унаследовано от Control) |
BuildProfileTree(String, Boolean) |
Собирает сведения о серверном элементе управления и доставляет их свойству Trace, которое отображается при включенной на странице трассировке. (Унаследовано от Control) |
ClearCachedClientID() |
Задает для кэшированного свойства ClientID значение |
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) |
Выполняет поиск серверного элемента управления с заданным параметром |
FindControl(String, Int32) |
Выполняет поиск в текущем контейнере именования серверного элемента управления с указанным |
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) |
Вызывается после удаления дочернего элемента управления из коллекции Controls объекта Control. (Унаследовано от Control) |
Render(HtmlTextWriter) |
Отправляет содержимое серверного элемента управления в предоставленный объект HtmlTextWriter, который записывает содержимое для отрисовки в клиенте. (Унаследовано от Control) |
RenderChildren(HtmlTextWriter) |
Выводит содержимое дочерних элементов серверного элемента управления в предоставленный объект HtmlTextWriter, который записывает это содержимое для подготовки к просмотру на клиенте. (Унаследовано от Control) |
RenderControl(HtmlTextWriter) |
Выводит содержимое серверного элемента управления в указанный объект HtmlTextWriter и сохраняет сведения о трассировке элемента управления, если трассировка включена. (Унаследовано от Control) |
RenderControl(HtmlTextWriter, ControlAdapter) |
Выводит серверный элемент управления в указанный объект HtmlTextWriter, используя указанный объект ControlAdapter. (Унаследовано от Control) |
ResolveAdapter() |
Возвращает адаптер элемента управления, отвечающий за отрисовку определенного элемента управления. (Унаследовано от Control) |
ResolveClientUrl(String) |
Возвращает URL-адрес, который может использоваться браузером. (Унаследовано от Control) |
ResolveUrl(String) |
Преобразует URL-адрес в адрес, доступный для клиента. (Унаследовано от Control) |
SaveControlState() |
Сохраняет любые изменения состояния серверного элемента управления, произошедшие после отправки страницы обратно на сервер. (Унаследовано от Control) |
SaveViewState() |
Сохраняет любые изменения состояния просмотра серверного элемента управления, произошедшие после отправки страницы обратно на сервер. (Унаследовано от Control) |
SetDesignModeState(IDictionary) |
Задает данные времени разработки для элемента управления. (Унаследовано от Control) |
SetRenderMethodDelegate(RenderMethod) |
Назначает делегата обработчика событий для преобразования серверного элемента управления и его содержимого для просмотра в родительский элемент управления. (Унаследовано от Control) |
SetTraceData(Object, Object) |
Задает данные трассировки для трассировки данных отрисовки во время разработки, используя ключ данных трассировки и значение данных трассировки. (Унаследовано от Control) |
SetTraceData(Object, 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) |
Явные реализации интерфейса
Методы расширения
FindDataSourceControl(Control) |
Возвращает источник данных, связанный с элементом управления данными, для заданного элемента управления. |
FindFieldTemplate(Control, String) |
Возвращает шаблон поля для заданного столбца в контейнере именования заданного элемента управления. |
FindMetaTable(Control) |
Возвращает объект метатаблицы для контейнерного элемента управления данными. |