ConsumerConnectionPoint 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.
Tüketici olarak davranan bir sunucu denetiminin bir sağlayıcıyla bağlantı kurmasını sağlayan bir bağlantı noktası nesnesi tanımlar.
public ref class ConsumerConnectionPoint : System::Web::UI::WebControls::WebParts::ConnectionPoint
public class ConsumerConnectionPoint : System.Web.UI.WebControls.WebParts.ConnectionPoint
type ConsumerConnectionPoint = class
inherit ConnectionPoint
Public Class ConsumerConnectionPoint
Inherits ConnectionPoint
- Devralma
Örnekler
Aşağıdaki kod örneği, her durumda bir tüketici bağlantı noktasını kullanarak bildirim temelli, programlı veya kullanıcı arabirimi aracılığıyla bağlantı oluşturmanın basit yollarını gösterir.
Ö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 için kaynak kodu ve bir bağlantı için sağlayıcı ve tüketici olarak davranan iki WebPart denetim.
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 kaydederek, barındırma Web sayfasının üst kısmına yakın olan bu kullanıcı denetimi yönergesinin Register özniteliğine Src atanan 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ü 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ı IZipCodebasit 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. Diğer WebPart sınıf olarak adlandırılır WeatherWebPartve 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 kodu 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 yerleştirebilirsiniz; burada çalışma zamanında dinamik olarak derlenir. Bu kod örneği dinamik derlemeyi 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ştirmesini sağlayan kullanıcı denetimi bulunur. Bağlantının kendisi, sayfadaki öğesi içinde <staticconnections> bildirim temelli olarak oluşturulur. Bu, bağlantı oluşturmanın bir yolunu gösterir; öğesindeki <asp:webpartconnection> özniteliği not ConsumerConnectionPointID edin. Bağlantıyı program aracılığıyla da oluşturabilirsiniz; bunu yapmak için kod yöntemindedir Button1_Click . Bu durumda, bir ConsumerConnectionPoint nesne oluşturulur ve ardından gerçek bağlantıyı oluşturan bir yönteme geçirilir. Bağlantının bildirim temelli veya programlı olarak oluşturulması fark etmeksizin, bağlantı noktaları her zaman hem sağlayıcı hem de tüketici için belirtilmelidir.
Button2_Click yöntemi hem sağlayıcının hem de tüketicinin nesnelerine 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.
Posta Kodu SağlayıcısıWebPart denetiminin fiiller menüsünde (başlık çubuğunda aşağı doğru bir okla gösterilir) bağlan 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. Bu, daha önce ele alınan bildirim temelli ve programlı yöntemlerle birlikte (kullanıcı arabirimi aracılığıyla) bağlantı oluşturmanın başka bir yoludur. Mevcut statik bağlantıyı sonlandırmak için Bağlantıyı Kes düğmesine tıklayın.
Tüketiciye Bağlantı Oluştur bağlantısına tıklayın. Kullanıcı arabirimi artık tüketici bağlantı noktası görünen adını listeleyen bir açılan denetim görüntüler. Açılan listeden bağlantı noktasını seçin ve bağlantıyı tamamlamak için Bağlan'a tıklayın. Ardından Bağlantıyı Kes'e yeniden tıklayın. Program aracılığıyla bağlantı oluşturmak için Dinamik Bağlantı düğmesine tıklayın. Sayfayı göz atma moduna döndürmek için Görüntü Modu denetimini kullanın. Tüketici bağlantı noktası nesnesi hakkındaki ayrıntıları bir kez daha belirtmek için Bağlantı Noktası Ayrıntıları düğmesine yeniden tıklayın.
Örnekte bağlantı kurma ve tüketici bağlantı noktası kullanma işlemleri üç şekilde gösterilmiştir: Web sayfası işaretlemesinde bildirilen statik bağlantı; bir nesne kullanan kodda oluşturulan bir ConsumerConnectionPoint bağlantı ve kullanıcı tarafından bağlantı kullanıcı arabirimi aracılığıyla oluşturulan bir bağlantı.
Açıklamalar
İki sunucu denetimi arasındaki her Web Bölümü bağlantısında, her denetimin (diğer gereksinimlerin yanı sıra) diğer denetime bağlanmasını ve denetimin bağlantı için sağlayıcı veya tüketici olarak belirlenip belirlenmediğine bağlı olarak veri sağlamasına veya kullanmasına olanak tanıyan ilişkili bir bağlantı noktası nesnesine sahip olması gerekir. Genel ConnectionPoint olarak bir nesne, 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çerir. Bir bağlantıda tüketici olarak davranan bir denetim için, bağlantı noktası bir ConsumerConnectionPoint nesne olmalıdır. Web Bölümleri bağlantıları ve bağlantı noktalarıyla ilgili ayrıntılar için aşağıdaki Ayrıca Bkz. bölümünde listelenen konuları okuyun.
Nesne oluşturmak ConsumerConnectionPoint için birkaç adım gerekir:
Bir arabirim örneğine başvurmak için bir tüketici denetimini etkinleştirin. Bir WebPart veya başka bir sunucu denetimi (bölgeye eklenecek herhangi bir WebPartZoneBase sunucu denetimi türü kullanılabilir) belirli bir arabirim örneğinden veri kullanabilmelidir. Denetimin arabirimini uygulaması gerekmez; yalnızca sağlayıcı bunu uygulamalıdır. Tüketici, sağlayıcı tarafından sunulan tam arabirim türüyle çalışabilir veya çalışmazsa, bir WebPartTransformer sağlayıcının arabirim türünden tüketici tarafından anlaşılan bir türe veri dönüştürmek için bir nesne kullanılabilir. Tüketiciyi etkinleştirmenin tipik bir yolu, istenen arabirim türüne başvuru içerecek özel bir alan bildirmektir.
Bir geri çağırma yöntemi belirleyin. Tüketicideki bir yöntem, sağlayıcıyla bağlantı kurmak için geri çağırma yöntemi olarak tanımlanmalıdır. Bu yöntem, sağlayıcının uyguladığı arabirimin bir örneğini alır ve ilk adımda oluşturulan özel alana (örneğin) atar. Tüketicide geri çağırma yöntemini tanımlamaya yönelik Web Bölümleri yaklaşımı, arabirim örneğini alan yönteme bir
ConnectionConsumermeta veri özniteliği (sınıf tarafından ConnectionConsumerAttribute tanımlanır) eklemektir. Öznitelik eklendiğinde, gerekli tek parametre tüketici bağlantı noktası için kullanılacak bir görünen addır. kimlik gibi isteğe bağlı parametreler de eklenebilir.Arabirim örneğinden verileri işleyin ve çıktısını alın. Veriler üzerinde gerekli iç işlemleri gerçekleştirdikten sonra genellikle bir tüketici denetimi verileri sayfaya işler. Bunu yapmanın yaygın bir yolu, denetimin OnPreRender yöntemini geçersiz kılmaktır.
Uyarı
Zaman uyumlu istek sırasında, bir tüketici olay sırasında veya hemen sonrasında PreRender doğrudan sağlayıcıdan veri istemelidir. Zaman uyumsuz istek sırasında, sağlayıcının geri çağırma yöntemi işleme sırasında herhangi bir noktada çağrılmazsa, geliştirici tüketiciye veri gönderilmediğini varsayabilir.
Bir denetim bir tüketici olarak davranacak şekilde donatıldıktan sonra, denetim bağlantılara katılabilir (sağlayıcı denetiminin de donatılmış ve kullanılabilir olduğu varsayılarak). Web sayfasının işaretlemesinde statik, bildirim temelli bir bağlantı oluşturmak için geliştiriciler öğesini kullanabilir <asp:webpartconnection> .
ConnectionConsumer Geri çağırma yöntemini tanımlayan tüketici kaynak kodundaki öznitelik bağlantı noktası için bir kimlik belirtiyorsa, bu değerin sayfadaki öğesindeki <asp:webpartconnection> özniteliğine ConsumerConnectionPointID atanması gerekir. Bir geliştiricinin bir tüketici bağlantı noktası için kimlik belirtmesinin bir nedeni, tüketici denetiminde tanımlanan birden çok bağlantı noktası olmasıdır. Tüketici denetimindeki tüketici bağlantı noktası için kimlik belirtilmezse, bağlantı alandan alınan DefaultID varsayılan bir değer kullanılarak oluşturulacağından, sayfadaki özniteliğe ConsumerConnectionPointID bir değer atanması gerekmez.
Kodda bağlantı oluşturmak için geliştiricilerin yöntemini çağırarak GetConsumerConnectionPoints yeni ConsumerConnectionPoint bir nesne oluşturması ve buna tüketici denetimindeki tanımlı ConsumerConnectionPoint nesnenin kimliği veya diziniyle birlikte tüketici denetiminin kimliğini geçirmesi gerekir. Döndürülen ConsumerConnectionPoint nesnenin yanı sıra tüketici denetimine bir başvuru, sağlayıcı denetimine bir başvuru ve buna karşılık gelen ProviderConnectionPoint bir nesne, yeni WebPartConnection bir nesne oluşturmak için yöntemine ConnectWebParts geçirilir.
Geliştiriciler bildirim temelli veya programlı olarak bağlantı kurmanın bir parçası olarak tüketici bağlantı noktalarını kullansa da, kullanıcılar kullanıcı arabirimi (UI) aracılığıyla bağlantı kurmak için tüketici bağlantı noktalarıyla da etkileşim kurabilir. Geliştiriciler Web sayfasında bir ConnectionsZone denetim bildirirse, kullanıcıların bağlantı oluşturması için bir çalışma zamanı kullanıcı arabirimi sağlar. Kullanıcılar bağlantı fiiline tıklayarak bağlantı kurmak için sağlayıcı denetimini başlangıç noktası olarak seçerse (tüketiciyi de seçebilirler; sonuçta elde edilen bağlantıda fark yoktur), kullanıcı arabiriminde, sağlayıcının verileri gönderebileceği kullanılabilir tüketici bağlantı noktasının (veya birden çok tane varsa noktaların) görünen adlarını içeren bir açılan liste denetimi görürler. Kullanıcıların bağlantı kurmak için bir tüketici bağlantı noktası seçmesi gerekir.
Bir ConsumerConnectionPoint nesne doğrudan belirli bir tüketici denetimiyle ilişkilendirir ve temel ConnectionPoint sınıftan devraldığı özelliklerde bir bağlantı hakkındaki ayrıntıları depolar. Örneğin, devralınan InterfaceType özellikte bir tüketici bağlantı noktası kullandığı arabirim türünü korur. Hem sağlayıcı hem de bir bağlantıdaki tüketici arabirim türünü anlarsa, denetimler uyumludur ve doğrudan bağlantı oluşturabilir. Sağlayıcı ve tüketici aynı arabirim türüyle çalışamıyorsa uyumsuzlardır ve sağlayıcı bağlantı noktasının InterfaceType özelliğini tüketicinin çalışabileceği bir türe çevirmek için bir nesnesi kullanmalıdırWebPartTransformer. Devralınan DisplayName bir diğer önemli özellik, kullanıcıların bağlantı oluştururken bir tüketici bağlantı noktası seçmesi için kullanıcı arabiriminde görüntülenecek kolay bir ad sağlayan özelliğidir. Geliştiriciler bir tüketici denetiminde geri çağırma yöntemine bir ConnectionConsumer öznitelik eklediğinde, görünen ad gerekli parametredir. Devralınan ID özellik, yukarıda belirtildiği gibi, bir tüketicinin birden çok bağlantı noktası olması durumunda bir tüketici bağlantı noktası için benzersiz bir tanımlayıcı sağladığından da yararlıdır. Tüketicinin içinde birden çok ConsumerConnectionPoint nesne tanımlanmış olabilir ve bu durumda, geliştiriciler özniteliği bir yönteme eklediğinde ConnectionConsumer , her bağlantı noktasını ayırt etmek için bir kimlik değeri belirtmelidir. Diğer önemli devralınan özelliklerden biri de, bir tüketici bağlantı noktasının AllowsMultipleConnections aynı anda birden çok sağlayıcıya bağlanıp bağlanamayacağını gösteren özelliğidir. Bu özellik değeri, tüketici bağlantı noktaları için varsayılan değerdir false (sağlayıcı bağlantı noktaları için varsayılan değer true ise).
sınıfı, ConsumerConnectionPoint sınıftan ConnectionPoint devraldığı üyelere birkaç benzersiz yöntem ekler. yöntemi, SetObject sağlayıcıdan arabirim örneğini almak için tüketicinin kendi tanımlı geri çağırma yöntemini çağırır. yöntemi, SupportsConnection ilişkili tüketici denetiminin geçerli durumuna bağlı olarak bağlantı noktasının bağlantı kurup kuramadığını gösteren bir Boole değeri döndürür.
Oluşturucular
| Name | Description |
|---|---|
| ConsumerConnectionPoint(MethodInfo, Type, Type, String, String, Boolean) |
ConsumerConnectionPoint sınıfının yeni bir örneğini başlatır. |
Özellikler
| Name | Description |
|---|---|
| AllowsMultipleConnections |
Bir bağlantı noktasının birden çok eşzamanlı bağlantıyı destekleyip desteklemediğini gösteren bir değer alır. (Devralındığı yer: ConnectionPoint) |
| ControlType |
Type Bir bağlantı noktasının ilişkilendirildiği sunucu denetimini alır. (Devralındığı yer: ConnectionPoint) |
| DisplayName |
Kullanıcı arabirimindeki (UI) bir bağlantı noktasını temsil eden kolay görünen ad olarak hizmet veren bir dize alır. (Devralındığı yer: ConnectionPoint) |
| ID |
Bağlantı noktasının tanımlayıcısını içeren bir dize alır. (Devralındığı yer: ConnectionPoint) |
| InterfaceType |
Bağlantı noktası tarafından kullanılan arabirimin türünü alır. (Devralındığı yer: ConnectionPoint) |
Yöntemler
| Name | Description |
|---|---|
| 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. (Devralındığı yer: ConnectionPoint) |
| GetHashCode() |
Varsayılan karma işlevi işlevi görür. (Devralındığı yer: Object) |
| GetType() |
Geçerli örneğin Type alır. (Devralındığı yer: Object) |
| MemberwiseClone() |
Geçerli Objectbasit bir kopyasını oluşturur. (Devralındığı yer: Object) |
| SetObject(Control, Object) |
Bir tüketici denetiminde geri çağırma yöntemini çağırır ve arabirim örneğini bir sağlayıcı denetiminden alır. |
| SupportsConnection(Control, ConnectionInterfaceCollection) |
Bir tüketici bağlantı noktasının şu anda bağlantı kurup kuramayacağını belirler. |
| ToString() |
Geçerli nesneyi temsil eden bir dize döndürür. (Devralındığı yer: Object) |