ProxyWebPartManager Klass
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Ger utvecklare ett sätt att deklarera statiska anslutningar på en innehållssida när en WebPartManager kontroll har deklarerats på innehållssidans associerade huvudsida.
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
- Arv
- Attribut
Exempel
I följande kodexempel visas hur du använder ProxyWebPartManager klassen för att deklarera statiska anslutningar på innehållssidor i ett program som använder huvudsidor. Exemplet innehåller fem delar:
En användarkontroll som gör att du kan ändra visningsläget för webbdelar på en sida.
Källkod för ett gränssnitt och två WebPart kontroller som fungerar som provider och konsument för en anslutning.
En huvudwebbsida som är värd för användarkontrollen, innehållssidorna WebPartManager och kontrollen för programmet.
En innehållswebbsida som är värd för en ProxyWebPartManager kontroll, de två anpassade WebPart kontrollerna och en statisk anslutning för att ansluta de två kontrollerna.
En förklaring av hur du kör exempelsidan.
Den första delen av det här kodexemplet är användarkontrollen som gör det möjligt för användare att ändra visningslägen på en webbsida. Spara följande källkod i en .ascx-fil, vilket ger den det filnamn som har tilldelats till Src -attributet för direktivet för den Register här användarkontrollen, som ligger längst upp på värdhuvudsidan. Mer information om visningslägen och en beskrivning av källkoden i den här kontrollen finns i Genomgång: Ändra visningslägen på en webbsida.
<%@ 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>
Den andra delen av kodexemplet är källkoden för gränssnittet och kontrollerna. Källfilen innehåller ett enkelt gränssnitt med namnet IZipCode. Det finns också en WebPart klass med namnet ZipCodeWebPart som implementerar gränssnittet och fungerar som providerkontroll. Dess ProvideIZipCode metod är återanropsmetoden som implementerar gränssnittets enda medlem. Metoden returnerar helt enkelt en instans av gränssnittet. Observera att metoden har markerats med ett ConnectionProvider attribut i dess metadata. Det här är mekanismen för att identifiera metoden som återanropsmetod för providerns anslutningspunkt. Den andra WebPart klassen heter WeatherWebPartoch fungerar som konsument för anslutningen. Den här klassen har en metod med namnet GetZipCode som hämtar en instans av IZipCode gränssnittet från providerkontrollen. Observera att den här metoden är markerad som konsumentens anslutningspunktsmetod med ett ConnectionConsumer attribut i dess metadata.
För att kodexemplet ska köras måste du kompilera den här källkoden. Du kan kompilera den explicit och placera den resulterande sammansättningen i webbplatsens bin-mapp eller den globala sammansättningscacheminnet. Du kan också placera källkoden i webbplatsens App_Code mapp, där den kompileras dynamiskt vid körning. I det här kodexemplet används dynamisk kompilering. En genomgång som visar hur du kompilerar finns i Genomgång: Utveckla och använda en anpassad webbserverkontroll.
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
Den tredje delen av kodexemplet är huvudsidan. Du bör ta följande källkod och spara den i en fil och namnge den MasterPageCS.master eller MasterPageVB.master (beroende på vilket språk du använder). Observera att huvudsidan innehåller ett Register direktiv för att registrera användarkontrollen och refererar till själva användarkontrollen i sidans brödtext. Huvudsidan deklarerar också det enda <asp:webpartmanager> element som används för den här sidan och alla relaterade innehållssidor. Slutligen har huvudsidan ett <asp: contentplaceholder> element som deklarerar den punkt på sidan där innehållssidan infogas.
<%@ 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>
Den fjärde delen av kodexemplet är innehållssidan. Du bör kopiera följande källkod och spara den i en fil med ett .aspx-tillägg. Observera att dess Page direktiv innehåller ett MasterFile attribut som refererar till huvudsidan. Den här sidan har också ett Register direktiv för att registrera filen i mappen App_Code som innehåller dynamiskt kompilerade anpassade WebPart kontroller som deltar i anslutningen. I taggarna <asp:content> på sidan finns det ett <asp:proxywebpartmanager> element, med ett underordnat <staticconnections> element, som i sin tur har ett underordnat <asp:webpartconnection> element för att deklarera information om anslutningen. I taggarna <script> på sidan Button1_Click lägger metoden till kod som kommer åt huvudkontrollen WebPartManager på huvudsidan och ProxyWebPartManager kontrollen på innehållssidan och skriver en del av deras information till sidan.
<%@ 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>
När du har läst in sidan i en webbläsare klickar du på knappen WebPartManager Information och observerar informationen om WebPartManager kontrollen på huvudsidan och ProxyWebPartManager kontrollen på innehållssidan. Observera till exempel att båda har samma antal i sina respektive egenskaper som spårar statiska anslutningar (egenskapen StaticConnections ). Observera också att även om WebPartManager kontrollen har en WebParts egenskap som spårar antalet WebPart kontroller som den ProxyWebPartManager hanterar, har kontrollen ingen sådan egenskap, eftersom dess enda syfte är att innehålla statiska anslutningar.
Kommentarer
Kontrollen ProxyWebPartManager finns för det specifika scenariot med att deklarera statiska anslutningar på innehållssidor när en WebPartManager kontroll redan har deklarerats på en huvudsida.
En webbsida som använder webbdelskontroller måste innehålla en (och endast en) WebPartManager kontroll som hanterar alla webbdelskontroller på sidan. När ett webbdelsprogram använder huvudsidor är det vanligt att placera WebPartManager kontrollen på huvudsidan, eftersom alla innehållssidor sammanfogas med huvudsidan vid körning och den enda WebPartManager kontrollen hanterar alla webbdelar-kontroller från alla innehållssidor. Men när utvecklare vill deklarera statiska anslutningar på innehållssidorna i ett sådant program kan de verka ha en begränsning. En statisk webbdelsanslutning kan bara deklareras genom att lägga till ett <asp:webpartconnection> element som underordnat ett <staticconnections> element, vilket i sig måste vara underordnat ett <asp:webpartmanager> element. Men eftersom WebPartManager kontrollen redan har deklarerats på huvudsidan och är den enda tillåtna WebPartManager kontrollen kan utvecklare inte deklarera ytterligare WebPartManager kontroller på innehållssidorna för att lägga till statiska anslutningar.
Kontrollen ProxyWebPartManager tar kontrollens WebPartManager plats i det här scenariot. Utvecklare deklarerar ett <asp:proxywebpartmanager> element i stället för ett <asp:webpartmanager> element på sina innehållssidor och kan sedan deklarera statiska anslutningar som underordnade element. Vid körning läggs anslutningarna ProxyWebPartManager i kontrollen helt enkelt till StaticConnections i kontrollens WebPartManager samling och behandlas som alla andra anslutningar.
ProxyWebPartManager Eftersom kontrollen endast används i det här utvecklingsscenariot har den mer begränsade funktioner än WebPartManager klassen. Även om ProxyWebPartManager kontrollen fungerar som en proxyserver för att innehålla statiska anslutningar för WebPartManager kontrollen på innehållssidor ärver den WebPartManager inte från kontrollen. Den ärver direkt från Control klassen och åsidosätter bara ett fåtal av basmedlemmarna. Egenskaperna EnableTheming, Visibleoch SkinID åsidosätts och tilldelas värden som förhindrar att de används. Andra ärvda egenskaper åsidosätts för att justera sitt designtidsbeteende, men annars har de samma beteende som basegenskaperna. Dessa inkluderar Controls egenskaperna och ClientID . Slutligen ProxyWebPartManager har klassen en icke-ärvd egenskap. Egenskapen StaticConnections returnerar en egen samling statiska anslutningar (ett ProxyWebPartConnectionCollection objekt).
När det ProxyWebPartManager gäller metoder åsidosätter klassen på samma sätt bara några få metoder, främst för att begränsa användningen. Den ärvda Focus metoden blir oanvändbar genom att utlösa ett undantag om den anropas. Metoden CreateControlCollection returnerar alltid en tom kontrollsamling, vilket innebär att den inte kan innehålla en samling kontroller. Slutligen OnInit anropar metoden basmetoden och tilldelar sedan den samling anslutningar som refereras av StaticConnections egenskapen till WebPartManager.StaticConnections kontrollens WebPartManager egenskap. Detta innebär att alla statiska anslutningar som deklarerats på alla innehållssidor samlas in och blir en del av anslutningssamlingen WebPartManager som underhålls av kontrollen på huvudsidan.
Konstruktorer
| Name | Description |
|---|---|
| ProxyWebPartManager() |
Initierar en ny instans av ProxyWebPartManager klassen. |
Egenskaper
| Name | Description |
|---|---|
| Adapter |
Hämtar det webbläsarspecifika adaptern för kontrollen. (Ärvd från Control) |
| AppRelativeTemplateSourceDirectory |
Hämtar eller anger den programrelativa virtuella katalogen PageUserControl för eller -objektet som innehåller den här kontrollen. (Ärvd från Control) |
| BindingContainer |
Hämtar kontrollen som innehåller den här kontrollens databindning. (Ärvd från Control) |
| ChildControlsCreated |
Hämtar ett värde som anger om serverkontrollens underordnade kontroller har skapats. (Ärvd från Control) |
| ClientID |
Hämtar kontroll-ID:t för HTML-kod som genereras av ASP.NET. |
| ClientIDMode |
Hämtar eller anger den algoritm som används för att generera värdet för ClientID egenskapen. (Ärvd från Control) |
| ClientIDSeparator |
Hämtar ett teckenvärde som representerar det avgränsartecken som används i egenskapen ClientID . (Ärvd från Control) |
| Context |
Hämtar objektet HttpContext som är associerat med serverkontrollen för den aktuella webbbegäran. (Ärvd från Control) |
| Controls |
Hämtar ett ControlCollection objekt som representerar de underordnade kontrollerna för en angiven serverkontroll i användargränssnittshierarkin. |
| DataItemContainer |
Hämtar en referens till namngivningscontainern om namngivningscontainern implementerar IDataItemContainer. (Ärvd från Control) |
| DataKeysContainer |
Hämtar en referens till namngivningscontainern om namngivningscontainern implementerar IDataKeysControl. (Ärvd från Control) |
| DesignMode |
Hämtar ett värde som anger om en kontroll används på en designyta. (Ärvd från Control) |
| EnableTheming |
Åsidosätter basegenskapen för att förhindra att teman används. |
| EnableViewState |
Hämtar eller anger ett värde som anger om serverkontrollen bevarar sitt visningstillstånd och visningstillståndet för eventuella underordnade kontroller som den innehåller till den begärande klienten. (Ärvd från Control) |
| Events |
Hämtar en lista över händelsehanterardelegater för kontrollen. Den här egenskapen är skrivskyddad. (Ärvd från Control) |
| HasChildViewState |
Hämtar ett värde som anger om den aktuella serverkontrollens underordnade kontroller har några sparade vytillståndsinställningar. (Ärvd från Control) |
| ID |
Hämtar eller anger den programmatiska identifierare som tilldelats serverkontrollen. (Ärvd från Control) |
| IdSeparator |
Hämtar det tecken som används för att separera kontrollidentifierare. (Ärvd från Control) |
| IsChildControlStateCleared |
Hämtar ett värde som anger om kontroller i den här kontrollen har kontrolltillstånd. (Ärvd från Control) |
| IsTrackingViewState |
Hämtar ett värde som anger om serverkontrollen sparar ändringar i visningstillståndet. (Ärvd från Control) |
| IsViewStateEnabled |
Hämtar ett värde som anger om visningstillstånd är aktiverat för den här kontrollen. (Ärvd från Control) |
| LoadViewStateByID |
Hämtar ett värde som anger om kontrollen deltar i inläsningen av dess visningstillstånd i ID stället för index. (Ärvd från Control) |
| NamingContainer |
Hämtar en referens till serverkontrollens namngivningscontainer, vilket skapar ett unikt namnområde för differentiering mellan serverkontroller med samma ID egenskapsvärde. (Ärvd från Control) |
| Page |
Hämtar en referens till den Page instans som innehåller serverkontrollen. (Ärvd från Control) |
| Parent |
Hämtar en referens till serverkontrollens överordnade kontroll i sidkontrollhierarkin. (Ärvd från Control) |
| RenderingCompatibility |
Hämtar ett värde som anger den ASP.NET version som renderad HTML kommer att vara kompatibel med. (Ärvd från Control) |
| Site |
Hämtar information om containern som är värd för den aktuella kontrollen när den återges på en designyta. (Ärvd från Control) |
| SkinID |
Åsidosätter basegenskapen för att förhindra att ett värde tilldelas. |
| StaticConnections |
Hämtar en samling statiska anslutningar som deklarerats i elementet |
| TemplateControl |
Hämtar eller anger en referens till mallen som innehåller den här kontrollen. (Ärvd från Control) |
| TemplateSourceDirectory |
Hämtar den virtuella katalogen för Page eller UserControl som innehåller den aktuella serverkontrollen. (Ärvd från Control) |
| UniqueID |
Hämtar den unika, hierarkiskt kvalificerade identifieraren för serverkontrollen. (Ärvd från Control) |
| ValidateRequestMode |
Hämtar eller anger ett värde som anger om kontrollen kontrollerar klientindata från webbläsaren efter potentiellt farliga värden. (Ärvd från Control) |
| ViewState |
Hämtar en ordlista med tillståndsinformation som gör att du kan spara och återställa visningstillståndet för en serverkontroll över flera begäranden för samma sida. (Ärvd från Control) |
| ViewStateIgnoresCase |
Hämtar ett värde som anger om objektet StateBag är skiftlägesokänsligt. (Ärvd från Control) |
| ViewStateMode |
Hämtar eller anger visningstillståndsläget för den här kontrollen. (Ärvd från Control) |
| Visible |
Åsidosätter basegenskapen för att förhindra att ett värde tilldelas. |
Metoder
| Name | Description |
|---|---|
| AddedControl(Control, Int32) |
Anropas efter att en underordnad kontroll har lagts till i ControlsControl objektets samling. (Ärvd från Control) |
| AddParsedSubObject(Object) |
Meddelar serverkontrollen att ett element, antingen XML eller HTML, parsades och lägger till elementet i serverkontrollens ControlCollection objekt. (Ärvd från Control) |
| ApplyStyleSheetSkin(Page) |
Tillämpar formategenskaperna som definierats i sidformatmallen på kontrollen. (Ärvd från Control) |
| BeginRenderTracing(TextWriter, Object) |
Påbörjar designtidsspårning av återgivningsdata. (Ärvd från Control) |
| BuildProfileTree(String, Boolean) |
Samlar in information om serverkontrollen och levererar den till egenskapen Trace som ska visas när spårning är aktiverat för sidan. (Ärvd från Control) |
| ClearCachedClientID() |
Anger det cachelagrade ClientID värdet till |
| ClearChildControlState() |
Tar bort kontrolltillståndsinformationen för serverkontrollens underordnade kontroller. (Ärvd från Control) |
| ClearChildState() |
Tar bort informationen om visningstillstånd och kontrolltillstånd för alla serverkontrollens underordnade kontroller. (Ärvd från Control) |
| ClearChildViewState() |
Tar bort visningstillståndsinformationen för alla serverkontrollens underordnade kontroller. (Ärvd från Control) |
| ClearEffectiveClientIDMode() |
Anger egenskapen för ClientIDMode den aktuella kontrollinstansen och för eventuella underordnade kontroller till Inherit. (Ärvd från Control) |
| CreateChildControls() |
Anropas av det ASP.NET sidramverket för att meddela serverkontroller som använder kompositionsbaserad implementering för att skapa underordnade kontroller som de innehåller som förberedelse för att publicera tillbaka eller återge. (Ärvd från Control) |
| CreateControlCollection() |
Åsidosätter basegenskapen ProxyWebPartManager för att förhindra att kontrollen innehåller kontroller. |
| DataBind() |
Binder en datakälla till den anropade serverkontrollen och alla dess underordnade kontroller. (Ärvd från Control) |
| DataBind(Boolean) |
Binder en datakälla till den anropade serverkontrollen och alla dess underordnade kontroller med ett alternativ för att skapa händelsen DataBinding . (Ärvd från Control) |
| DataBindChildren() |
Binder en datakälla till serverkontrollens underordnade kontroller. (Ärvd från Control) |
| Dispose() |
Gör att en serverkontroll kan utföra slutlig rensning innan den frigörs från minnet. (Ärvd från Control) |
| EndRenderTracing(TextWriter, Object) |
Avslutar designtidsspårning av återgivningsdata. (Ärvd från Control) |
| EnsureChildControls() |
Avgör om serverkontrollen innehåller underordnade kontroller. Om den inte gör det skapar den underordnade kontroller. (Ärvd från Control) |
| EnsureID() |
Skapar en identifierare för kontroller som inte har tilldelats någon identifierare. (Ärvd från Control) |
| Equals(Object) |
Avgör om det angivna objektet är lika med det aktuella objektet. (Ärvd från Object) |
| FindControl(String, Int32) |
Söker i den aktuella namngivningscontainern efter en serverkontroll med det angivna |
| FindControl(String) |
Söker i den aktuella namngivningscontainern efter en serverkontroll med den angivna |
| Focus() |
Åsidosätter basmetoden för att förhindra att metoden anropas. |
| GetDesignModeState() |
Hämtar designtidsdata för en kontroll. (Ärvd från Control) |
| GetHashCode() |
Fungerar som standard-hash-funktion. (Ärvd från Object) |
| GetRouteUrl(Object) |
Hämtar url:en som motsvarar en uppsättning routningsparametrar. (Ärvd från Control) |
| GetRouteUrl(RouteValueDictionary) |
Hämtar url:en som motsvarar en uppsättning routningsparametrar. (Ärvd från Control) |
| GetRouteUrl(String, Object) |
Hämtar url:en som motsvarar en uppsättning vägparametrar och ett vägnamn. (Ärvd från Control) |
| GetRouteUrl(String, RouteValueDictionary) |
Hämtar url:en som motsvarar en uppsättning vägparametrar och ett vägnamn. (Ärvd från Control) |
| GetType() |
Hämtar den aktuella instansen Type . (Ärvd från Object) |
| GetUniqueIDRelativeTo(Control) |
Returnerar den prefixade delen av UniqueID egenskapen för den angivna kontrollen. (Ärvd från Control) |
| HasControls() |
Avgör om serverkontrollen innehåller några underordnade kontroller. (Ärvd från Control) |
| HasEvents() |
Returnerar ett värde som anger om händelser har registrerats för kontrollen eller underordnade kontroller. (Ärvd från Control) |
| IsLiteralContent() |
Avgör om serverkontrollen endast innehåller literalinnehåll. (Ärvd från Control) |
| LoadControlState(Object) |
Återställer kontrolltillståndsinformation från en begäran från föregående sida som sparades av SaveControlState() metoden. (Ärvd från Control) |
| LoadViewState(Object) |
Återställer visningstillståndsinformation från en begäran från föregående sida som sparades av SaveViewState() metoden. (Ärvd från Control) |
| MapPathSecure(String) |
Hämtar den fysiska sökväg som en virtuell sökväg, antingen absolut eller relativ, mappar till. (Ärvd från Control) |
| MemberwiseClone() |
Skapar en ytlig kopia av den aktuella Object. (Ärvd från Object) |
| OnBubbleEvent(Object, EventArgs) |
Avgör om händelsen för serverkontrollen skickas upp på sidans UI-serverkontrollhierarki. (Ärvd från Control) |
| OnDataBinding(EventArgs) |
Genererar händelsen DataBinding . (Ärvd från Control) |
| OnInit(EventArgs) |
Genererar händelsen Init och initierar kontrollen. |
| OnLoad(EventArgs) |
Genererar händelsen Load . (Ärvd från Control) |
| OnPreRender(EventArgs) |
Genererar händelsen PreRender . (Ärvd från Control) |
| OnUnload(EventArgs) |
Genererar händelsen Unload . (Ärvd från Control) |
| OpenFile(String) |
Hämtar en Stream som används för att läsa en fil. (Ärvd från Control) |
| RaiseBubbleEvent(Object, EventArgs) |
Tilldelar alla källor till händelsen och dess information till kontrollens överordnade. (Ärvd från Control) |
| RemovedControl(Control) |
Anropas efter att en underordnad Controls kontroll har tagits bort från objektets Control samling. (Ärvd från Control) |
| Render(HtmlTextWriter) |
Skickar serverkontrollinnehåll till ett angivet HtmlTextWriter objekt som skriver innehållet som ska återges på klienten. (Ärvd från Control) |
| RenderChildren(HtmlTextWriter) |
Matar ut innehållet i en serverkontrolls underordnade objekt till ett angivet HtmlTextWriter objekt som skriver innehållet som ska återges på klienten. (Ärvd från Control) |
| RenderControl(HtmlTextWriter, ControlAdapter) |
Matar ut serverkontrollinnehåll till ett angivet HtmlTextWriter objekt med hjälp av ett angivet ControlAdapter objekt. (Ärvd från Control) |
| RenderControl(HtmlTextWriter) |
Matar ut serverkontrollinnehåll till ett angivet HtmlTextWriter objekt och lagrar spårningsinformation om kontrollen om spårning är aktiverat. (Ärvd från Control) |
| ResolveAdapter() |
Hämtar kontrollkortet som ansvarar för att återge den angivna kontrollen. (Ärvd från Control) |
| ResolveClientUrl(String) |
Hämtar en URL som kan användas av webbläsaren. (Ärvd från Control) |
| ResolveUrl(String) |
Konverterar en URL till en som kan användas på den begärande klienten. (Ärvd från Control) |
| SaveControlState() |
Sparar alla ändringar i serverkontrolltillståndet som har inträffat sedan sidan publicerades tillbaka till servern. (Ärvd från Control) |
| SaveViewState() |
Sparar alla ändringar i visningstillståndet för serverkontroll som har inträffat sedan sidan publicerades tillbaka till servern. (Ärvd från Control) |
| SetDesignModeState(IDictionary) |
Anger designtidsdata för en kontroll. (Ärvd från Control) |
| SetRenderMethodDelegate(RenderMethod) |
Tilldelar ett händelsehanterardelegat för att återge serverkontrollen och dess innehåll till den överordnade kontrollen. (Ärvd från Control) |
| SetTraceData(Object, Object, Object) |
Anger spårningsdata för designtidsspårning av återgivningsdata, med hjälp av det spårade objektet, spårningsdatanyckeln och värdet för spårningsdata. (Ärvd från Control) |
| SetTraceData(Object, Object) |
Anger spårningsdata för designtidsspårning av återgivningsdata med hjälp av spårningsdatanyckeln och värdet för spårningsdata. (Ärvd från Control) |
| ToString() |
Returnerar en sträng som representerar det aktuella objektet. (Ärvd från Object) |
| TrackViewState() |
Orsakar spårning av visningstillståndsändringar i serverkontrollen så att de kan lagras i serverkontrollens StateBag objekt. Det här objektet är tillgängligt via egenskapen ViewState . (Ärvd från Control) |
Händelser
| Name | Description |
|---|---|
| DataBinding |
Inträffar när serverkontrollen binder till en datakälla. (Ärvd från Control) |
| Disposed |
Inträffar när en serverkontroll frigörs från minnet, vilket är den sista fasen i serverkontrolllivscykeln när en ASP.NET sida begärs. (Ärvd från Control) |
| Init |
Inträffar när serverkontrollen initieras, vilket är det första steget i dess livscykel. (Ärvd från Control) |
| Load |
Inträffar när serverkontrollen läses in i Page objektet. (Ärvd från Control) |
| PreRender |
Inträffar efter att objektet Control har lästs in men före återgivningen. (Ärvd från Control) |
| Unload |
Inträffar när serverkontrollen tas bort från minnet. (Ärvd från Control) |
Explicita gränssnittsimplementeringar
Tilläggsmetoder
| Name | Description |
|---|---|
| FindDataSourceControl(Control) |
Returnerar datakällan som är associerad med datakontrollen för den angivna kontrollen. |
| FindFieldTemplate(Control, String) |
Returnerar fältmallen för den angivna kolumnen i den angivna kontrollens namngivningscontainer. |
| FindMetaTable(Control) |
Returnerar metatabellobjektet för den innehållande datakontrollen. |