ConnectionPoint Sınıf
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Bir Web Bölümleri bağlantısında tüketici denetimini ve sağlayıcı denetiminin veri paylaşmasını sağlayan bağlantı noktası nesnelerini tanımlamak için temel sınıf görevi görür.
public ref class ConnectionPoint abstract
public abstract class ConnectionPoint
type ConnectionPoint = class
Public MustInherit Class ConnectionPoint
- Devralma
-
ConnectionPoint
- Türetilmiş
Örnekler
Aşağıdaki kod örneği, gerekli ConnectionPoint nesneleri içeren bir Web Bölümleri bağlantısının oluşturulmasını gösterir. ConnectionPoint sınıf soyut bir temel sınıf olduğundan, alt sınıflarının örnekleri--ProviderConnectionPoint ve ConsumerConnectionPoint-- bağlantı oluşturmak için kullanılan gerçek nesnelerdir.
Örnekte dört bölüm vardır:
Sayfadaki Web Bölümleri görüntüleme modunu değiştirmenize olanak tanıyan bir kullanıcı denetimi.
Bir arabirim ve bir bağlantı için sağlayıcı ve tüketici olarak davranan iki WebPart denetimin kaynak kodu.
Tüm denetimleri barındırmak ve kod örneğini çalıştırmak için bir Web sayfası.
Örnek sayfayı çalıştırmanın açıklaması.
Bu kod örneğinin ilk bölümü, kullanıcıların Web sayfasındaki görüntü modlarını değiştirmesine olanak tanıyan kullanıcı denetimidir. Aşağıdaki kaynak kodu bir .ascx dosyasına kaydedin ve bu dosyaya, barındırma Web sayfasının en üstüne yakın olan bu kullanıcı denetimi yönergesinin Register
özniteliğine atanan Src
dosya adını verin. Bu denetimdeki görüntü modları ve kaynak kodun açıklaması hakkında ayrıntılı bilgi için bkz . İzlenecek Yol: Web Bölümleri Sayfasında Görüntüleme Modlarını Değiştirme.
<%@ 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>
Kod örneğinin ikinci bölümü, arabirim ve denetimlerin kaynak kodudur. Kaynak dosya adlı IZipCode
basit bir arabirim içerir. Ayrıca arabirimini uygulayan ve sağlayıcı denetimi olarak davranan adlı ZipCodeWebPart
bir WebPart sınıf da vardır. Yöntemi ProvideIZipCode
, arabirimin tek üyesini uygulayan geri çağırma yöntemidir. yöntemi yalnızca arabiriminin bir örneğini döndürür. yönteminin meta verilerinde bir ConnectionProvider
öznitelikle işaretlendiğini unutmayın. Bu, sağlayıcının bağlantı noktası için geri çağırma yöntemi olarak yöntemini tanımlama mekanizmasıdır. Diğer WebPart sınıf olarak adlandırılır WeatherWebPart
ve bağlantı için tüketici işlevi görür. Bu sınıf, sağlayıcı denetiminden arabirimin bir örneğini IZipCode
alan adlı GetZipCode
bir yönteme sahiptir. Bu yöntemin, meta verilerinde bir ConnectionConsumer
özniteliği olan tüketicinin bağlantı noktası yöntemi olarak işaretlendiğini unutmayın. Bu, tüketici denetimindeki bağlantı noktası yöntemini tanımlama mekanizmasıdır.
Kod örneğinin çalışması için bu kaynak kodunu derlemeniz gerekir. Bunu açıkça derleyebilir ve sonuçta elde edilen derlemeyi Web sitenizin Bin klasörüne veya genel derleme önbelleğine yerleştirebilirsiniz. Alternatif olarak, kaynak kodu sitenizin App_Code klasörüne koyabilirsiniz; burada çalışma zamanında dinamik olarak derlenir. Bu kod örneği dinamik derleme kullanır. Derlemeyi gösteren bir izlenecek yol için bkz . İzlenecek Yol: Özel Web Sunucusu Denetimi Geliştirme ve Kullanma.
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
Kod örneğinin üçüncü bölümü Web sayfasıdır. Üst kısımda Register
, bağlantıyı oluşturan özel denetimleri kaydetme yönergeleri ve kullanıcıların sayfadaki görüntü modlarını değiştirmesine olanak tanıyan kullanıcı denetimi bulunur. Bağlantının kendisi, sayfadaki öğesi içinde <staticconnections>
bildirimli olarak oluşturulur. Bağlantıyı program aracılığıyla da oluşturabilirsiniz; bunu yapmak için kod yönteminde Button1_Click
yer alır. Bağlantının bildirim temelli veya programlı olarak oluşturulması fark etmeksizin, bağlantı noktalarının her zaman hem sağlayıcı hem de tüketici için belirtilmesi gerekir.
Button2_Click
yöntemi hem sağlayıcı hem de tüketici için nesnelere erişir ConnectionPoint ve özellik değerlerinden bazılarını sayfadaki bir etikete yazar.
<%@ Page Language="C#" %>
<%@ register tagprefix="uc1"
tagname="DisplayModeMenuCS"
src="~/displaymodemenucs.ascx" %>
<%@ Register TagPrefix="aspSample"
Namespace="Samples.AspNet.CS.Controls" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
protected void Button1_Click(object sender, EventArgs e)
{
ProviderConnectionPoint provPoint =
mgr.GetProviderConnectionPoints(zip1)["ZipCodeProvider"];
ConsumerConnectionPoint connPoint =
mgr.GetConsumerConnectionPoints(weather1)["ZipCodeConsumer"];
if(mgr.CanConnectWebParts(zip1, provPoint, weather1, connPoint))
mgr.ConnectWebParts(zip1, provPoint, weather1, connPoint);
}
protected void Button2_Click(object sender, EventArgs e)
{
WebPartConnection conn = mgr.Connections[0];
lblConn.Text = "<h2>Connection Point Details</h2>" +
"<h3>Provider Connection Point</h3>" +
" Display name: " + conn.ProviderConnectionPoint.DisplayName +
"<br />" +
" ID: " + conn.ProviderConnectionPoint.ID +
"<br />" +
" Interface type: " +
conn.ProviderConnectionPoint.InterfaceType.ToString() +
"<br />" +
" Control type: " + conn.ProviderConnectionPoint.ControlType.ToString() +
"<br />" +
" Allows multiple connections: " +
conn.ProviderConnectionPoint.AllowsMultipleConnections.ToString() +
"<br />" +
" Enabled: " + conn.ProviderConnectionPoint.GetEnabled(zip1).ToString() +
"<hr />" +
"<h3>Consumer Connection Point</h3>" +
" Display name: " + conn.ConsumerConnectionPoint.DisplayName +
"<br />" +
" ID: " + conn.ConsumerConnectionPoint.ID +
"<br />" +
" Interface type: " + conn.ConsumerConnectionPoint.InterfaceType.ToString() +
"<br />" +
" Control type: " + conn.ConsumerConnectionPoint.ControlType.ToString() +
"<br />" +
" Allows multiple connections: " +
conn.ConsumerConnectionPoint.AllowsMultipleConnections.ToString() +
"<br />" +
" Enabled: " + conn.ConsumerConnectionPoint.GetEnabled(zip1).ToString();
}
protected void Page_Load(object sender, EventArgs e)
{
lblConn.Text = String.Empty;
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:WebPartManager ID="mgr" runat="server" >
<StaticConnections>
<asp:WebPartConnection ID="conn1"
ConsumerConnectionPointID="ZipCodeConsumer"
ConsumerID="weather1"
ProviderConnectionPointID="ZipCodeProvider"
ProviderID="zip1" />
</StaticConnections>
</asp:WebPartManager>
<uc1:displaymodemenucs id="menu1" runat="server" />
<asp:WebPartZone ID="WebPartZone1" runat="server">
<ZoneTemplate>
<aspSample:ZipCodeWebPart ID="zip1" runat="server"
Title="Zip Code Provider" />
<aspSample:WeatherWebPart ID="weather1" runat="server"
Title="Zip Code Consumer" />
</ZoneTemplate>
</asp:WebPartZone>
<asp:ConnectionsZone ID="ConnectionsZone1" runat="server">
</asp:ConnectionsZone>
<asp:Button ID="Button1" runat="server"
Text="Dynamic Connection"
OnClick="Button1_Click" />
<br />
<asp:Button ID="Button2" runat="server"
Text="Connection Point Details"
OnClick="Button2_Click" />
<br />
<asp:Label ID="lblConn" runat="server" />
</div>
</form>
</body>
</html>
<%@ Page Language="VB" %>
<%@ register tagprefix="uc1"
tagname="DisplayModeMenuVB"
src="~/displaymodemenuvb.ascx" %>
<%@ Register TagPrefix="aspSample"
Namespace="Samples.AspNet.VB.Controls" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
Protected Sub Button1_Click(ByVal sender As Object, _
ByVal e As System.EventArgs)
Dim provPoint As ProviderConnectionPoint = _
mgr.GetProviderConnectionPoints(zip1)("ZipCodeProvider")
Dim connPoint As ConsumerConnectionPoint = _
mgr.GetConsumerConnectionPoints(weather1)("ZipCodeConsumer")
If mgr.CanConnectWebParts(zip1, provPoint, weather1, connPoint) Then
mgr.ConnectWebParts(zip1, provPoint, weather1, connPoint)
End If
End Sub
Protected Sub Button2_Click(ByVal sender As Object, _
ByVal e As System.EventArgs)
Dim conn As WebPartConnection = mgr.Connections(0)
lblConn.Text = "<h2>Connection Point Details</h2>" & _
"<h3>Provider Connection Point</h3>" & _
" Display name: " & conn.ProviderConnectionPoint.DisplayName & _
"<br />" & _
" ID: " & conn.ProviderConnectionPoint.ID & _
"<br />" & _
" Interface type: " & conn.ProviderConnectionPoint.InterfaceType.ToString() & _
"<br />" & _
" Control type: " & conn.ProviderConnectionPoint.ControlType.ToString() & _
"<br />" & _
" Allows multiple connections: " & _
conn.ProviderConnectionPoint.AllowsMultipleConnections.ToString() & _
"<br />" & _
" Enabled: " & conn.ProviderConnectionPoint.GetEnabled(zip1).ToString() & _
"<hr />" & _
"<h3>Consumer Connection Point</h3>" & _
" Display name: " & conn.ConsumerConnectionPoint.DisplayName & _
"<br />" & _
" ID: " & conn.ConsumerConnectionPoint.ID & _
"<br />" & _
" Interface type: " & conn.ConsumerConnectionPoint.InterfaceType.ToString() & _
"<br />" & _
" Control type: " & conn.ConsumerConnectionPoint.ControlType.ToString() & _
"<br />" & _
" Allows multiple connections: " & _
conn.ConsumerConnectionPoint.AllowsMultipleConnections.ToString() & _
"<br />" & _
" Enabled: " & conn.ConsumerConnectionPoint.GetEnabled(zip1).ToString()
End Sub
Protected Sub Page_Load(ByVal sender As Object, _
ByVal e As System.EventArgs)
lblConn.Text = String.Empty
End Sub
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:WebPartManager ID="mgr" runat="server" >
<StaticConnections>
<asp:WebPartConnection ID="conn1"
ConsumerConnectionPointID="ZipCodeConsumer"
ConsumerID="weather1"
ProviderConnectionPointID="ZipCodeProvider"
ProviderID="zip1" />
</StaticConnections>
</asp:WebPartManager>
<uc1:displaymodemenuvb id="menu1" runat="server" />
<asp:WebPartZone ID="WebPartZone1" runat="server">
<ZoneTemplate>
<aspSample:ZipCodeWebPart ID="zip1" runat="server"
Title="Zip Code Provider" />
<aspSample:WeatherWebPart ID="weather1" runat="server"
Title="Zip Code Consumer" />
</ZoneTemplate>
</asp:WebPartZone>
<asp:ConnectionsZone ID="ConnectionsZone1" runat="server">
</asp:ConnectionsZone>
<asp:Button ID="Button1" runat="server"
Text="Dynamic Connection"
OnClick="Button1_Click" />
<br />
<asp:Button ID="Button2" runat="server"
Text="Connection Point Details"
OnClick="Button2_Click" />
<br />
<asp:Label ID="lblConn" runat="server" />
</div>
</form>
</body>
</html>
Sayfayı bir tarayıcıda yükledikten sonra Bağlantı Noktası Ayrıntıları düğmesine tıklayın. Bildirim temelli bağlantıda oluşturulan sağlayıcı ve tüketici bağlantı noktaları hakkında bilgiler görüntülenir. Ardından, sayfayı bağlantı moduna geçmek için Görüntü Modu açılan denetimini kullanın. Denetimlerden birinin WebPart fiiller menüsünde (başlık çubuğunda aşağı okla gösterilir) bağlanma fiiline tıklayın. Bağlantı kullanıcı arabirimi görüntülenir ve sayfada bildirilen denetim tarafından <asp:connectionszone>
otomatik olarak oluşturulur. Var olan bağlantıyı sonlandırmak için Bağlantıyı Kes düğmesine tıklayın. Sayfayı göz atma moduna döndürmek için Görüntü Modu denetimini kullanın. Ardından, program aracılığıyla bağlantı oluşturmak için Dinamik Bağlantı düğmesine tıklayın. İki bağlantı noktası nesnesi hakkındaki ayrıntıları belirtmek için Bağlantı Noktası Ayrıntıları düğmesine yeniden tıklayın.
Açıklamalar
Her Web Bölümü bağlantısı, veri paylaşan iki sunucu denetiminden oluşur: denetimlerden biri tüketici, diğeri sağlayıcıdır. Web Bölümleri bağlantısının temel bileşenleri ve bağlantı nesnesinin kendisi hakkında bilgi için sınıfa genel bakış bölümüne WebPartConnection bakın. Her Web Bölümü bağlantısı için bağlantı noktaları gerekir. Sağlayıcı ve tüketici denetiminin her birinde, bir denetimin başka bir denetime nasıl bağlanabileceğine ve paylaşabileceği veri türüne ilişkin ayrıntıları içeren en az bir tanımlı ConnectionPoint nesne (her birinin isteğe bağlı olarak birden çok bağlantı noktası olabilir) olması gerekir. Gerçek bir bağlantıda sağlayıcının kendi bağlantı noktası nesnesi türü (temel ConnectionPoint sınıftan türetilir), bir ProviderConnectionPoint örneği ve tüketicinin kendi nesnesi (bir ConsumerConnectionPoint örnek) vardır.
Sağlayıcı bağlantı noktası oluşturmak için geliştiricilerin sağlayıcıya bir tüketiciye uygulanan arabirim örneği döndürecek bir geri çağırma yöntemi eklemesi gerekir. Kaynak koddaki geri çağırma yöntemini bir ConnectionProvider
kod özniteliğiyle işaretlemeleri gerekir (sınıfa ConnectionProviderAttribute bakın). Benzer şekilde, bir tüketici bağlantı noktası oluşturmak için geliştiricilerin bir arabirim örneği alan tüketiciye bir yöntem eklemesi ve bu yöntemi bir ConnectionConsumer
öznitelikle işaretlemeleri gerekir (sınıfa ConnectionConsumerAttribute bakın).
Geliştiriciler bir Web sayfasında bağlantılar oluşturduğunda, statik veya dinamik bağlantılar olarak oluşturulabilir. Statik bağlantılar bir Web sayfasının işaretlemesinde bildirilir. Statik bağlantı bildirildiğinde, geliştiriciler öğe etiketindeki ve ConsumerConnectionPointID
özniteliklerine değerler atayarak hem tüketici hem de sağlayıcı için hangi bağlantı noktalarının ProviderConnectionPointID
<asp:webpartconnection>
kullanıldığını belirleyebilir. Bu yaklaşım özellikle tüketici ve sağlayıcı denetimlerinde tanımlanmış birden çok bağlantı noktası varsa kullanışlıdır çünkü statik bağlantının bağlantı için hangi bağlantı noktalarının kullanılacağını belirlemesini sağlar.
Dinamik bağlantılar, bir geliştiricinin kodu veya denetim tarafından sağlanan kullanıcı arabirimi (UI) aracılığıyla kullanıcılar tarafından ConnectionsZone program aracılığıyla oluşturulur. Kodda bağlantı oluşturmak için geliştiricilerin denetimde WebPartManager yöntemini çağırarak bir WebPartConnection nesnenin örneğini ConnectWebParts alması gerekir. Geliştiricilerin bu yöntemi çağırabilmesi için önce tüketici ve sağlayıcı sunucu denetimlerine ve ilgili bağlantı noktası nesnelerine başvuruları olmalıdır. Geliştiriciler, bir sağlayıcının ve tüketici denetiminin bağlantı noktalarına başvurular almak için önce denetimdeki WebPartManager ve GetConsumerConnectionPoints yöntemlerini çağırırGetProviderConnectionPoints. Bu yöntemler uygun bağlantı noktası nesnelerini döndürür ve bu nesneler de bağlantı oluşturmak için yöntemine geçirilebilir.
Sağlayıcının ve tüketicinin bağlantı noktası nesnelerinin her ikisi de aynı arabirim türüyle çalıştığında uyumlu olur ve verileri paylaşmak için doğrudan bağlantı oluşturabilir. Aynı arabirim türüyle çalışmazlarsa, arabirim örneğini sağlayıcıdan tüketicinin çalışabileceği bir türe çevirmek için bir WebPartTransformer nesne kullanılmalıdır.
Soyut ConnectionPoint sınıfı, hem tüketici hem de sağlayıcı denetimleri tarafından paylaşılan bağlantı noktalarının temel ayrıntılarını sağlar. Çeşitli özellikler bu ayrıntıları içerir. özelliği, AllowsMultipleConnections bir bağlantı noktasının aynı anda birden fazla bağlantıya katılıp katılamayacağını gösterir. Varsayılan olarak, sağlayıcı bağlantı noktaları birden çok bağlantıya katılabilir ve tüketici bağlantı noktaları katılamaz. özelliği, ControlType bir bağlantı noktasıyla ilişkili sunucu denetiminin türünü gösterir. Yalnızca WebPart denetimlerin bağlantı oluşturamadığını; ASP.NET denetimi, özel denetim veya kullanıcı denetimi gibi herhangi bir sunucu denetiminin, bir WebPartZoneBase bölgeye yerleştirildiğinde bağlantılara katılmak için etkinleştirilebileceğini unutmayın. özelliği, DisplayName bağlantı oluşturan kullanıcılara yardımcı olmak için kullanıcı arabiriminde görüntülenebilen bağlantı noktası için kolay bir ad sağlar. ID özelliği, bağlantı noktası nesnesinin kendisi için bir dize tanımlayıcısı işlevi görür. özelliği, InterfaceType bağlantı noktasının ne tür bir arabirim örneğini anladığını gösterir. Belirli bir bağlantı noktasının bu arabirimin bir örneğini sağlayıp sağlamadığı veya kullanıp kullanmadığı, bir nesne ConsumerConnectionPoint mi olduğuna ProviderConnectionPoint göre belirlenir.
sınıfının ConnectionPoint tek bir yöntemi vardır. yöntemi, GetEnabled bir bağlantı noktasının şu anda bağlantılara katılıp katılamayacağını belirten bir Boole değeri döndürür.
Sınıfın ConnectionPoint bir ortak alanı da vardır: DefaultID. Bu alan, bir bağlantıdaki varsayılan bağlantı noktasını tanımlamak için kullanılan değeri içerir.
Not
Bağlantı noktası yöntemlerini belirtme özniteliklerinin tek bir gerekli parametresi vardır, displayName
bu nedenle kimlik belirtmeden varsayılan bağlantı noktası özniteliğini oluşturmak mümkündür. Bu gibi durumlarda, DefaultID alanı kullanılacak bir temel değer sağlar.
Alanlar
DefaultID |
Bir sunucu denetimiyle ilişkili bağlantı noktaları koleksiyonu içindeki varsayılan bağlantı noktasını tanımlamak için kullanılan bir dizeyi temsil eder. |
Özellikler
AllowsMultipleConnections |
Bir bağlantı noktasının birden çok eşzamanlı bağlantıyı destekleyip desteklemediğini gösteren bir değer alır. |
ControlType |
Type Bir bağlantı noktasının ilişkilendirildiği sunucu denetimini alır. |
DisplayName |
Kullanıcı arabirimindeki (UI) bir bağlantı noktasını temsil eden kolay görünen ad olarak hizmet veren bir dize alır. |
ID |
Bağlantı noktasının tanımlayıcısını içeren bir dize alır. |
InterfaceType |
Bir bağlantı noktası tarafından kullanılan arabirimin türünü alır. |
Yöntemler
Equals(Object) |
Belirtilen nesnenin geçerli nesneye eşit olup olmadığını belirler. (Devralındığı yer: Object) |
GetEnabled(Control) |
Bağlantı noktasının bağlantılara katılıp katılamayacağını gösteren bir değer döndürür. |
GetHashCode() |
Varsayılan karma işlevi işlevi görür. (Devralındığı yer: Object) |
GetType() |
Type Geçerli örneğini alır. (Devralındığı yer: Object) |
MemberwiseClone() |
Geçerli Objectöğesinin sığ bir kopyasını oluşturur. (Devralındığı yer: Object) |
ToString() |
Geçerli nesneyi temsil eden dizeyi döndürür. (Devralındığı yer: Object) |