WebPartConnection.IsActive Eigenschaft
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Ruft einen Wert ab, der angibt, ob ein WebPartConnection-Objekt derzeit eingerichtet und in der Lage ist, Daten zwischen seinem Anbieter- und seinem Consumersteuerelement auszutauschen.
public:
property bool IsActive { bool get(); };
[System.ComponentModel.Browsable(false)]
public bool IsActive { get; }
[<System.ComponentModel.Browsable(false)>]
member this.IsActive : bool
Public ReadOnly Property IsActive As Boolean
Eigenschaftswert
true
, wenn die Verbindung aktiv ist, andernfalls false
.
- Attribute
Beispiele
Im folgenden Codebeispiel wird die Verwendung der IsActive -Eigenschaft veranschaulicht.
Das Beispiel umfasst drei Teile:
Quellcode für eine Schnittstelle und zwei WebPart Steuerelemente, die als Anbieter und Consumer für eine Verbindung fungieren.
Eine Webseite, die alle Steuerelemente hosten und das Codebeispiel ausführen soll.
Eine Erklärung zum Ausführen der Beispielseite.
Der erste Teil des Codebeispiels ist der Quellcode für die Schnittstelle sowie die Consumer- und Anbietersteuerelemente. Damit das Codebeispiel ausgeführt werden kann, müssen Sie diesen Quellcode kompilieren. Sie können sie explizit kompilieren und die resultierende Assembly im Ordner Bin ihrer Website oder im globalen Assemblycache ablegen. Alternativ können Sie den Quellcode im Ordner App_Code Ihrer Website ablegen, wo er zur Laufzeit dynamisch kompiliert wird. In diesem Codebeispiel wird die dynamische Kompilierung verwendet. Eine exemplarische Vorgehensweise, die das Kompilieren veranschaulicht, finden Sie unter Exemplarische Vorgehensweise: Entwickeln und Verwenden eines benutzerdefinierten Webserversteuerelements.
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
Der zweite Teil des Codebeispiels ist die Webseite. Ganz oben befindet sich eine Register
Direktive, die sich auf den Quellcode für die beiden dynamisch kompilierten WebPart Steuerelemente bezieht. Die statische Verbindung wird innerhalb des <StaticConnections>
Elements auf der Seite deklariert. Innerhalb des <script>
-Elements befinden sich vier Ereignishandler. Jeder Ereignishandler überprüft den Wert der IsActive Eigenschaft für die statische Verbindung und schreibt eine Meldung in das Steuerelement, die Label angibt, ob die Verbindung in diesem Zustand der Seite und des Steuerelementlebenszyklus aktiv oder inaktiv ist. Dies zeigt, an welchem Punkt die Verbindung aktiv wird und dass sie aktiv bleibt, nachdem die Seite gerendert wurde.
<%@ Page Language="C#" %>
<%@ 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)
{
WebPartConnection conn = mgr.StaticConnections[0];
if (conn.IsActive)
lbl1.Text += "<em>Connection 0 is active.</em>";
else
lbl1.Text += "Connection 0 is inactive.";
}
protected void mgr_ConnectionsActivated(object sender, EventArgs e)
{
if(mgr.Connections[0].IsActive)
lbl2.Text += "<em>Connection 0 is active.</em>";
else
lbl2.Text += "Connection 0 is inactive.";
}
protected void mgr_ConnectionsActivating(object sender, EventArgs e)
{
if (mgr.Connections[0].IsActive)
lbl3.Text += "<em>Connection 0 is active.</em>";
else
lbl3.Text += "Connection 0 is inactive.";
}
protected void Page_PreRender(object sender, EventArgs e)
{
if (mgr.Connections[0].IsActive)
lbl4.Text += "<em>Connection 0 is active.</em>";
else
lbl4.Text += "Connection 0 is inactive.";
}
</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"
onconnectionsactivated="mgr_ConnectionsActivated"
onconnectionsactivating="mgr_ConnectionsActivating">
<StaticConnections>
<asp:WebPartConnection ID="conn1"
ConsumerConnectionPointID="ZipCodeConsumer"
ConsumerID="weather1"
ProviderConnectionPointID="ZipCodeProvider"
ProviderID="zip1" />
</StaticConnections>
</asp:WebPartManager>
<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="Connection Details"
OnClick="Button1_Click" />
<br />
<asp:Label ID="lbl1" runat="server">
<h3>Button_Click Status</h3>
</asp:Label>
<br />
<asp:Label ID="lbl2" runat="server">
<h3>ConnectionActivating Status</h3>
</asp:Label>
<br />
<asp:Label ID="lbl3" runat="server">
<h3>ConnectionActivated Status</h3>
</asp:Label>
<br />
<asp:Label ID="lbl4" runat="server">
<h3>ConnectionActivated Status</h3>
</asp:Label>
</div>
</form>
</body>
</html>
<%@ Page Language="VB" %>
<%@ 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 conn As WebPartConnection = mgr.StaticConnections(0)
If conn.IsActive Then
lbl1.Text += "<em>Connection 0 is active.</em>"
Else
lbl1.Text += "Connection 0 is inactive."
End If
End Sub
Protected Sub mgr_ConnectionsActivated(ByVal sender As Object, _
ByVal e As System.EventArgs)
If mgr.Connections(0).IsActive Then
lbl2.Text += "<em>Connection 0 is active.</em>"
Else
lbl2.Text += "Connection 0 is inactive."
End If
End Sub
Protected Sub mgr_ConnectionsActivating(ByVal sender As Object, _
ByVal e As System.EventArgs)
If mgr.Connections(0).IsActive Then
lbl3.Text += "<em>Connection 0 is active.</em>"
Else
lbl3.Text += "Connection 0 is inactive."
End If
End Sub
Protected Sub Page_PreRender(ByVal sender As Object, _
ByVal e As System.EventArgs)
If mgr.Connections(0).IsActive Then
lbl4.Text += "<em>Connection 0 is active.</em>"
Else
lbl4.Text += "Connection 0 is inactive."
End If
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"
OnConnectionsActivated="mgr_ConnectionsActivated"
OnConnectionsActivating="mgr_ConnectionsActivating">
<StaticConnections>
<asp:WebPartConnection ID="conn1"
ConsumerConnectionPointID="ZipCodeConsumer"
ConsumerID="weather1"
ProviderConnectionPointID="ZipCodeProvider"
ProviderID="zip1" />
</StaticConnections>
</asp:WebPartManager>
<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="Connection Details"
OnClick="Button1_Click" />
<br />
<asp:Label ID="lbl1" runat="server">
<h3>Button_Click Status</h3>
</asp:Label>
<br />
<asp:Label ID="lbl2" runat="server">
<h3>ConnectionActivating Status</h3>
</asp:Label>
<br />
<asp:Label ID="lbl3" runat="server">
<h3>ConnectionActivated Status</h3>
</asp:Label>
<br />
<asp:Label ID="lbl4" runat="server">
<h3>ConnectionActivated Status</h3>
</asp:Label>
</div>
</form>
</body>
</html>
Laden Sie die Seite in einen Browser. Die statische Verbindung wurde bereits erstellt, und es wurden bereits Meldungen in die Bezeichnungen geschrieben, die zeigen, ob die Verbindung an verschiedenen Stellen auf der Seite aktiv war und den Lebenszyklus steuert. Klicken Sie auf die Schaltfläche Verbindungsdetails , und beachten Sie, dass die Verbindung zu diesem Zeitpunkt nicht aktiv ist, die Verbindung jedoch jedes Mal nach dem ConnectionsActivated Ereignis erneut aktiviert wird und dass sie nach dem PreRender Ereignis der Seite weiterhin aktiv ist (und dies auch bleiben wird).
Hinweise
Die IsActive -Eigenschaft gibt den Zustand eines WebPartConnection -Objekts an. Wenn sich die Verbindung in diesem Zustand befindet, kommunizieren die Anbieter- und Consumersteuerelemente in der Verbindung und können Daten über eine gemeinsame Schnittstelle oder ein WebPartTransformer Objekt austauschen.
Wenn ein Benutzer eine gerenderte Seite anzeigt, die eine hergestellte Verbindung im normalen Browsermodus enthält, ist die Verbindung in der Regel aktiv (es sei denn, sie konnte aufgrund eines Konflikts oder eines anderen Problems beim Laden der Seite nicht aktiviert werden). In den frühen Phasen des Seiten- und Steuerelementlebenszyklus ist false
der Eigenschaftswert . Die Verbindung wird direkt nach dem Auslösen des ConnectionsActivated -Ereignisses für das WebPartManager Steuerelement aktiviert. Insbesondere wird die Verbindung aktiviert, nachdem der Consumer eine Instanz der angegebenen Schnittstelle vom Anbieter oder einem WebPartTransformer Objekt abgerufen hat.
Es ist hilfreich zu wissen, ob eine Verbindung in Situationen aktiv ist, in denen es aufgrund mehrerer Verbindungen auf einer Seite zu Konflikten oder Synchronisierungsproblemen kommen kann. Wenn beispielsweise ein Konflikt zwischen zwei Verbindungen besteht, hat das WebPartManager Steuerelement die Möglichkeit, eine der Verbindungen nicht zu aktivieren, um den Konflikt zu vermeiden.