Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
von Scott Mitchell
Untersucht, wie Methoden von der Master-Seite aus aufgerufen und Eigenschaften der Inhaltsseite festgelegt werden können.
Einführung
Im vorherigen Tutorial wurde untersucht, wie die Inhaltsseite programmgesteuert mit ihrer Masterseite interagieren kann. Erinnern Sie sich daran, dass wir die Gestaltungsvorlage aktualisiert haben, um ein GridView-Steuerelement einzuschließen, das die fünf zuletzt hinzugefügten Produkte aufgelistet hat. Anschließend haben wir eine Inhaltsseite erstellt, von der der Benutzer ein neues Produkt hinzufügen kann. Beim Hinzufügen eines neuen Produkts muss die Inhaltsseite die Masterseite anweisen, ihre GridView zu aktualisieren, sodass sie das gerade hinzugefügte Produkt enthält. Diese Funktionalität wurde durch das Hinzufügen einer öffentlichen Methode zur Masterseite erreicht, die die an die GridView gebundenen Daten aktualisiert, und dann diese Methode von der Inhaltsseite aus aufruft.
Die häufigste Form der Interaktion zwischen Inhalts- und Masterseiten geht von der Inhaltsseite aus. Es ist jedoch möglich, dass die Gestaltungsvorlage die aktuelle Inhaltsseite in Aktion versetzt, und diese Funktionalität kann erforderlich sein, wenn die Gestaltungsvorlage Elemente der Benutzeroberfläche enthält, mit denen Benutzer Daten ändern können, die auch auf der Inhaltsseite angezeigt werden. Betrachten Sie eine Inhaltsseite, auf der die Produktinformationen in einem GridView-Steuerelement angezeigt werden, und eine Masterseite, die ein Schaltflächen-Steuerelement enthält, das bei Klick die Preise aller Produkte verdoppelt. Ähnlich wie das Beispiel im vorhergehenden Tutorial muss die GridView aktualisiert werden, nachdem die Schaltfläche zum Verdoppeln der Preise angeklickt wurde, sodass sie die neuen Preise anzeigt. In diesem Szenario ist es jedoch die Masterseite, die die Inhaltsseite in Aktion versetzen muss.
In diesem Lernprogramm wird erläutert, wie die Masterseite Funktionen aufruft, die in der Inhaltsseite definiert sind.
Programmierte Interaktion durch ein Ereignis und zugehörige Ereignisbehandler auslösen
Das Aufrufen von Funktionen von Inhaltsseiten von einer Masterseite ist schwieriger als umgekehrt. Da eine Inhaltsseite eine einzelne Masterseite hat, ist uns bekannt, welche öffentlichen Methoden und Eigenschaften zur Verfügung stehen, wenn die programmgesteuerte Interaktion von der Inhaltsseite aus initiiert wird. Eine Masterseite kann jedoch viele verschiedene Inhaltsseiten haben, die jeweils über einen eigenen Satz von Eigenschaften und Methoden verfügen. Wie können wir dann Code auf der Masterseite schreiben, um eine Aktion auf der Inhaltsseite auszuführen, wenn wir nicht wissen, welche Inhaltsseite bis zur Laufzeit aufgerufen wird?
Betrachten Sie ein ASP.NET Websteuerelement, z. B. das Schaltflächen-Steuerelement. Ein Schaltflächensteuerelement kann auf einer beliebigen Anzahl von ASP.NET Seiten angezeigt werden und benötigt einen Mechanismus, mit dem sie die Seite benachrichtigen kann, auf die sie geklickt wurde. Dies erfolgt mithilfe von Ereignissen. Insbesondere löst das Button-Steuerelement sein Click Ereignis aus, wenn es angeklickt wird. Die ASP.NET Seite, die die Schaltfläche enthält, kann optional über einen Ereignishandler auf diese Benachrichtigung reagieren.
Dieses Muster kann verwendet werden, damit eine Masterseite Funktionalitäten auf ihren Inhaltsseiten auslöst.
- Fügen Sie der Masterseite ein Ereignis hinzu.
- Lösen Sie das Ereignis jedes Mal aus, wenn die Masterseite mit ihrer Inhaltsseite kommunizieren muss. Wenn die Gestaltungsvorlage beispielsweise die Inhaltsseite benachrichtigen muss, dass der Benutzer die Preise verdoppelt hat, würde das Ereignis unmittelbar nachdem die Preise verdoppelt wurden, ausgelöst.
- Erstellen Sie einen Ereignishandler auf diesen Inhaltsseiten, die eine Aktion ausführen müssen.
Der restliche Teil dieses Tutorials implementiert das in der Einführung beschriebene Beispiel: eine Inhaltsseite, auf der die Produkte in der Datenbank aufgelistet sind, und eine Masterseite, die ein Button-Steuerelement enthält, um die Preise zu verdoppeln.
Schritt 1: Anzeigen von Produkten auf einer Inhaltsseite
Unsere erste Geschäftsreihenfolge besteht darin, eine Inhaltsseite zu erstellen, die die Produkte aus der Northwind-Datenbank auflistet. (Wir haben die Northwind-Datenbank dem Projekt im vorherigen Lernprogramm hinzugefügt, Interaktion mit der Masterseite von der Inhaltsseite aus.) Fügen Sie zunächst eine neue ASP.NET-Seite zum ~/Admin Ordner namens Products.aspx hinzu, und stellen Sie sicher, dass sie an die Gestaltungsvorlage Site.master gebunden wird. Abbildung 1 zeigt den Solution Explorer, nachdem diese Seite der Website hinzugefügt wurde.
Abbildung 01: Hinzufügen einer neuen ASP.NET Seite zum Admin Ordner (Klicken, um das Bild in voller Größe anzuzeigen)
Erinnern Sie sich daran, dass wir im Lernprogramm "Titel", "Metatags" und "Andere HTML-Kopfzeilen" eine benutzerdefinierte Basisseitenklasse BasePage erstellt haben, die den Titel der Seite generiert, wenn sie nicht explizit festgelegt ist. Wechseln Sie zur Code-Behind-Klasse der Seite Products.aspx, und leiten Sie sie von BasePage ab (statt von System.Web.UI.Page).
Aktualisieren Sie schließlich die Web.sitemap Datei so, dass sie einen Eintrag für diese Lektion enthält. Fügen Sie das folgende Markup unterhalb der Komponente <siteMapNode> in der Lektion "Inhalt zur Master-Seiten-Interaktion" hinzu:
<siteMapNode url="~/Admin/Products.aspx" title="Master to Content Page Interaction" />
Das Hinzufügen dieses <siteMapNode>-Elements wird in der Lektionen-Liste widergespiegelt (siehe Abbildung 5).
Zurück zu Products.aspx. Fügen Sie in das Inhaltssteuerelement ein MainContentGridView-Steuerelement hinzu und benennen Sie es ProductsGrid. Binden Sie gridView an ein neues SqlDataSource-Steuerelement mit dem Namen ProductsDataSource.
Abbildung 02: Binden der GridView an ein neues SqlDataSource-Steuerelement (Klicken, um das Bild in voller Größe anzuzeigen)
Konfigurieren Sie den Assistenten so, dass er die Northwind-Datenbank verwendet. Wenn Sie das vorherige Lernprogramm durchgearbeitet haben, sollten Sie bereits über eine Verbindungszeichenfolge mit dem Namen NorthwindConnectionString im Kontext von Web.config verfügen. Wählen Sie diese Verbindungszeichenfolge aus der Dropdownliste aus, wie in Abbildung 3 dargestellt.
Abbildung 03: Konfigurieren der SqlDataSource für die Verwendung der Northwind-Datenbank (Klicken Sie hier, um das Bild in voller Größe anzuzeigen)
Geben Sie als Nächstes die Anweisung des Steuerelements für die Datenquelle SELECT an, indem Sie die Tabelle "Produkte" aus der Dropdown-Liste auswählen und die Spalten ProductName und UnitPrice zurückgeben (siehe Abbildung 4). Klicken Sie auf "Weiter" und dann auf "Fertig stellen", um den Assistenten zum Konfigurieren der Datenquelle abzuschließen.
Abbildung 04: Zurückgeben der ProductName Felder aus UnitPrice der Products Tabelle (Klicken Sie, um das Bild in voller Größe anzuzeigen)
Das war es schon! Visual Studio fügt der GridView nach Abschluss des Assistenten zwei BoundFields hinzu, die die beiden Felder widerspiegeln, die vom SqlDataSource-Steuerelement zurückgegeben werden. Das Markup der GridView- und SqlDataSource-Steuerelemente folgt. Abbildung 5 zeigt die Ergebnisse, wenn sie in einem Browser angezeigt werden.
<asp:GridView ID="ProductsGrid" runat="server" AutoGenerateColumns="False"
DataSourceID="ProductsDataSource">
<Columns>
<asp:BoundField DataField="ProductName" HeaderText="ProductName"
SortExpression="ProductName" />
<asp:BoundField DataField="UnitPrice" HeaderText="UnitPrice"
SortExpression="UnitPrice" />
</Columns>
</asp:GridView>
<asp:SqlDataSource ID="ProductsDataSource" runat="server"
ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>"
SelectCommand="SELECT [ProductName], [UnitPrice] FROM [Products]">
</asp:SqlDataSource>
Abbildung 05: Jedes Produkt und sein Preis sind in der GridView aufgeführt (Klicken Sie hier, um das Bild in voller Größe anzuzeigen)
Hinweis
Fühlen Sie sich frei, das Erscheinungsbild der GridView zu bereinigen. Einige Vorschläge umfassen das Formatieren des angezeigten UnitPrice-Werts als Währung und die Verwendung von Hintergrundfarben und Schriftarten, um das Erscheinungsbild des Rasters zu verbessern. Weitere Informationen zum Anzeigen und Formatieren von Daten in ASP.NET finden Sie in meiner Lernprogrammreihe "Arbeiten mit Daten".
Schritt 2: Hinzufügen einer Schaltfläche „Doppelte Preise“ zur Masterseite
Unsere nächste Aufgabe besteht darin, der Masterseite ein Schaltflächenweb-Steuerelement hinzuzufügen, das den Preis aller Produkte in der Datenbank verdoppelt, wenn darauf geklickt wird. Öffnen Sie die Masterseite Site.master und ziehen Sie eine Schaltfläche aus der Toolbox auf die Designoberfläche, platzieren Sie sie unter dem RecentProductsDataSource SqlDataSource-Steuerelement, das wir im vorherigen Lernprogramm hinzugefügt haben. Legen Sie die Eigenschaft der Schaltfläche ID auf DoublePrice fest und die Text-Eigenschaft auf „Produktpreise verdoppeln“.
Als Nächstes fügen Sie der Masterseite ein SqlDataSource-Steuerelement hinzu und benennen Sie es DoublePricesDataSource. Diese SqlDataSource wird verwendet, um die UPDATE Anweisung auszuführen, um alle Preise zu verdoppeln. Insbesondere müssen wir dessen ConnectionString- und UpdateCommand-Eigenschaften auf die entsprechende Verbindungszeichenfolge und die entsprechende UPDATE-Anweisung festlegen. Anschließend müssen wir die Methode dieses SqlDataSource-Steuerelements Update aufrufen, wenn auf die DoublePrice Schaltfläche geklickt wird. Um die Eigenschaften ConnectionString und UpdateCommand festzulegen, wählen Sie das SqlDataSource-Steuerelement aus und wechseln Sie dann zum Eigenschaften-Fenster. Die ConnectionString Eigenschaft listet die Verbindungszeichenfolgen, die bereits in einer Dropdownliste gespeichert sind, auf; wählen Sie die Option NorthwindConnectionString aus, wie in Abbildung 6 dargestellt.
Abbildung 06: Konfigurieren der SqlDataSource für die Verwendung des NorthwindConnectionString (Klicken Sie, um das Bild im Vollbildmodus anzuzeigen)
Um die UpdateCommand Eigenschaft festzulegen, suchen Sie die UpdateQuery-Option im Eigenschaftenfenster. Diese Eigenschaft zeigt bei Auswahl eine Schaltfläche mit Auslassungspunkten an; Klicken Sie auf diese Schaltfläche, um das Dialogfeld "Befehl" und "Parameter-Editor" in Abbildung 7 anzuzeigen. Geben Sie die folgende UPDATE Anweisung in das Textfeld des Dialogfelds ein:
UPDATE Products SET UnitPrice = UnitPrice * 2
Diese Anweisung verdoppelt, wenn sie ausgeführt wird, den UnitPrice Wert für jeden Datensatz in der Products Tabelle.
Abbildung 07: Festlegen der Eigenschaft von UpdateCommand SqlDataSource (Klicken Sie hier, um das Bild in voller Größe anzuzeigen)
Nach dem Festlegen dieser Eigenschaften sollte das deklarative Markup der Schaltflächen- und SqlDataSource-Steuerelemente ähnlich wie folgt aussehen:
<asp:Button ID="DoublePrice" runat="server"
Text="Double Product Prices" />
<asp:SqlDataSource ID="DoublePricesDataSource" runat="server"
UpdateCommand="UPDATE Products SET UnitPrice = UnitPrice * 2"
ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>"
ProviderName="<%$ ConnectionStrings:NorthwindConnectionString.ProviderName %>">
</asp:SqlDataSource>
All das bleibt, besteht darin, die Update Methode aufzurufen, wenn auf die DoublePrice Schaltfläche geklickt wird. Erstellen Sie einen Click Ereignishandler für die DoublePrice Schaltfläche, und fügen Sie den folgenden Code hinzu:
protected void DoublePrice_Click(object sender, EventArgs e)
{
// Double the prices
DoublePricesDataSource.Update();
}
Um diese Funktionalität zu testen, besuchen Sie die Seite ~/Admin/Products.aspx, die wir in Schritt 1 erstellt haben, und klicken Sie auf die Schaltfläche "Preisverdopplung". Beim Klicken auf die Schaltfläche wird ein Postback ausgelöst und der DoublePriceClick-Ereignishandler der Schaltfläche ausgeführt, wodurch die Preise aller Produkte verdoppelt werden. Die Seite wird dann erneut gerendert, und das Markup wird zurückgegeben und im Browser erneut angezeigt. Das GridView auf der Inhaltsseite listet jedoch die gleichen Preise auf wie vor dem Klicken auf die Schaltfläche "Doppelte Produktpreise". Dies liegt daran, dass die ursprünglich in gridView geladenen Daten ihren Zustand im Ansichtszustand gespeichert hatten, sodass sie nicht bei Postbacks neu geladen werden, es sei denn, dies ist anders angegeben. Wenn Sie eine andere Seite besuchen und dann zur ~/Admin/Products.aspx Seite zurückkehren, werden die aktualisierten Preise angezeigt.
Schritt 3: Auslösen eines Ereignisses, wenn die Preise verdoppelt werden
Da die GridView auf der ~/Admin/Products.aspx Seite nicht sofort die Preisverdoppelung widerspiegelt, kann ein Benutzer verständlicherweise denken, dass er nicht auf die Schaltfläche "Produktpreise verdoppeln" geklickt hat oder dass sie nicht funktioniert hat. Sie können versuchen, ein paar mal mehr auf die Schaltfläche zu klicken und die Preise immer wieder zu verdoppeln. Um dies zu beheben, müssen wir das Raster auf der Inhaltsseite die neuen Preise unmittelbar nach ihrer Verdoppelung anzeigen lassen.
Wie zuvor in diesem Lernprogramm erläutert, müssen wir ein Ereignis auf der Masterseite auslösen, wenn der Benutzer auf die DoublePrice Schaltfläche klickt. Ein Ereignis ist eine Möglichkeit für eine Klasse (ein Ereignisherausgeber), eine andere Gruppe von anderen Klassen (den Ereignisabonnenten) zu benachrichtigen, dass etwas Interessantes aufgetreten ist. In diesem Beispiel ist die Masterseite der Ereignisherausgeber; diese Inhaltsseiten, die daran interessiert sind, wann auf die DoublePrice Schaltfläche geklickt wird, sind die Abonnenten.
Eine Klasse abonniert ein Ereignis, indem ein Ereignishandler erstellt wird. Dabei handelt es sich um eine Methode, die als Reaktion auf das ausgelöste Ereignis ausgeführt wird. Der Herausgeber definiert die Ereignisse, die er auslöst, indem er einen Ereignisdelegat definiert. Der Ereignisdelegat gibt an, welche Eingabeparameter der Ereignishandler akzeptieren muss. In der .NET Framework geben Ereignisdelegaten keinen Wert zurück und akzeptieren zwei Eingabeparameter:
- Ein
Object, der die Ereignisquelle identifiziert und - Eine Klasse, die von
System.EventArgsabgeleitet ist
Der zweite Parameter, der an einen Ereignishandler übergeben wird, kann zusätzliche Informationen zum Ereignis enthalten. Während die Basisklasse EventArgs keine Informationen übergibt, enthält .NET Framework eine Reihe von Klassen, die zusätzliche Eigenschaften erweitern EventArgs und umfassen. Beispielsweise wird eine CommandEventArgs Instanz an Ereignishandler übergeben, die auf das Command Ereignis reagieren, und enthält zwei Informationseigenschaften: CommandArgument und CommandName.
Hinweis
Weitere Informationen zum Erstellen, Auslösen und Behandeln von Ereignissen finden Sie unter "Ereignisse und Stellvertretungen und Ereignisstellvertretungen" in einfachem Englisch.
Verwenden Sie zum Definieren eines Ereignisses die folgende Syntax:
public event eventDelegate eventName;
Da wir die Inhaltsseite nur benachrichtigen müssen, wenn der Benutzer auf die DoublePrice Schaltfläche geklickt hat und keine weiteren zusätzlichen Informationen übergeben muss, können wir den Ereignisdelegat EventHandlerverwenden, der einen Ereignishandler definiert, der als zweiter Parameter ein Objekt vom Typ System.EventArgsakzeptiert. Um das Ereignis auf der Masterseite zu erstellen, fügen Sie der Code-behind-Klasse der Masterseite die folgende Codezeile hinzu:
public partial class Site : System.Web.UI.MasterPage
{
public event EventHandler PricesDoubled;
...
}
Der obige Code fügt der Masterseite mit dem Namen PricesDoubled ein öffentliches Ereignis hinzu. Wir müssen dieses Ereignis jetzt auslösen, nachdem die Preise verdoppelt wurden. Verwenden Sie zum Auslösen eines Ereignisses die folgende Syntax:
if (eventName != null)
eventName(sender, eventArgs);
Dabei sind Absender und EventArgs die Werte, die Sie an den Ereignishandler des Abonnenten übergeben möchten.
Aktualisieren Sie den DoublePriceClick Ereignishandler mit dem folgenden Code:
protected void DoublePrice_Click(object sender, EventArgs e)
{
// Double the prices
DoublePricesDataSource.Update();
// Refresh RecentProducts
RecentProducts.DataBind();
// Raise the PricesDoubled event
if (PricesDoubled != null)
PricesDoubled(this, EventArgs.Empty);
}
Wie zuvor beginnt der Click Ereignishandler, indem die Methode des DoublePricesDataSource SqlDataSource-Steuerelements Update aufgerufen wird, um die Preise aller Produkte zu verdoppeln. Im Folgenden werden zwei Erweiterungen zum vorhandenen Ereignishandler hinzugefügt. Zuerst werden die Daten von RecentProducts GridView aktualisiert. Dieses GridView wurde der Master-Seite im vorherigen Lernprogramm hinzugefügt und zeigt die fünf zuletzt hinzugefügten Produkte an. Wir müssen dieses Gitter aktualisieren, damit es die gerade verdoppelten Preise für diese fünf Produkte anzeigt. Danach wird das PricesDoubled Ereignis ausgelöst. Ein Verweis auf die Masterseite selbst (this) wird als Ereignisquelle an den Ereignishandler gesendet, und ein leeres EventArgs-Objekt wird als Ereignisargument gesendet.
Schritt 4: Behandeln des Ereignisses auf der Inhaltsseite
An diesem Punkt löst die Masterseite das PricesDoubled Ereignis aus, wenn auf die DoublePrice Schaltfläche geklickt wird. Dies ist jedoch nur die Hälfte der Arbeit - wir müssen das Ereignis noch beim Abonnenten behandeln. Dazu gehören zwei Schritte: Erstellen des Ereignishandlers und Hinzufügen von Ereignisverkabelungscode, sodass beim Auslösen des Ereignisses der Ereignishandler ausgeführt wird.
Erstellen Sie zunächst einen Ereignishandler mit dem Namen Master_PricesDoubled. Aufgrund der Definition des PricesDoubled Ereignisses auf der Masterseite müssen die beiden Eingabeparameter des Ereignishandlers vom Typ Object bzw. EventArgs sein. Rufen Sie im Ereignishandler die ProductsGrid GridView-Methode DataBind auf, um die Daten erneut an das Raster zu binden.
private void Master_PricesDoubled(object sender, EventArgs e)
{
// Rebind data to ProductsGrid
ProductsGrid.DataBind();
}
Der Code für den Ereignishandler ist abgeschlossen, aber wir müssen das Ereignis der Masterseite PricesDoubled noch mit diesem Ereignishandler verbinden. Der Abonnent verknüpft ein Ereignis mit einem Ereignishandler über die folgende Syntax:
publisher.eventName += new eventDelegate(methodName);
Publisher ist ein Verweis auf das Objekt, das das Ereignis eventName anbietet, und methodName ist der Name des im Abonnenten definierten Ereignishandlers, der eine Signatur besitzt, die dem eventDelegate entspricht. Anders ausgedrückt: Wenn der Ereignisdelegat EventHandler ist, muss methodName der Name einer Methode im Abonnenten sein, die keinen Wert zurückgibt und zwei Eingabeparameter der Typen Object und EventArgs akzeptiert.
Dieser Ereigniszuordnungscode muss beim ersten Seitenbesuch und bei nachfolgenden Postbacks ausgeführt werden und sollte zu einem Zeitpunkt im Seitenlebenszyklus auftreten, der vor dem Zeitpunkt liegt, an dem das Ereignis ausgelöst werden kann. Ein guter Zeitpunkt, um Ereignisverknüpfungscode hinzuzufügen, ist die PreInit-Phase, die sehr früh im Lebenszyklus der Seite auftritt.
Öffnen ~/Admin/Products.aspx und Erstellen eines Page_PreInit Ereignishandlers:
protected void Page_PreInit(object sender, EventArgs e)
{
// TODO: Put event wiring logic here
}
Um diesen Programmiercode abzuschließen, benötigen wir einen programmgesteuerten Zugriff auf die Masterseite von der Inhaltsseite. Wie im vorherigen Lernprogramm erwähnt, gibt es zwei Möglichkeiten, dies zu tun:
- Durch Umwandeln der lose typierten
Page.MasterEigenschaft in den entsprechenden Gestaltungsvorlagentyp oder - Fügen Sie eine
@MasterType-Direktive auf der.aspx-Seite hinzu und verwenden Sie dann die stark typisierteMaster-Eigenschaft.
Lassen Sie uns den letztgenannten Ansatz verwenden. Fügen Sie oben im deklarativen Markup der Seite die folgende @MasterType Direktive hinzu:
<%@ MasterType VirtualPath="~/Site.master" %>
Fügen Sie dann den folgenden Ereignisverkabelungscode im Page_PreInit Ereignishandler hinzu:
protected void Page_PreInit(object sender, EventArgs e)
{
// Create an event handler for the master page's PricesDoubled event
Master.PricesDoubled += new EventHandler(Master_PricesDoubled);
}
Mit diesem Code wird die GridView auf der Inhaltsseite aktualisiert, wenn auf die DoublePrice Schaltfläche geklickt wird.
Abbildung 8 und 9 veranschaulichen dieses Verhalten. Abbildung 8 zeigt die Seite beim ersten Besuch. Beachten Sie, dass Preisinformationen sowohl im GridView RecentProducts (in der linken Spalte der Masterseite) als auch im GridView ProductsGrid (auf der Inhaltsseite) angezeigt werden. Abbildung 9 zeigt denselben Bildschirm unmittelbar nach dem Klicken auf die DoublePrice Schaltfläche. Wie Sie sehen können, werden die neuen Preise in beiden GridViews sofort wiedergegeben.
Abbildung 08: Die Anfangspreiswerte (Klicken Sie, um das Bild in voller Größe anzuzeigen)
Die gerade verdoppelten Preise werden in den GridViews angezeigt.
Abbildung 09: Die Just-Doubled-Preise werden in den GridViews angezeigt (Klicken Sie hier, um das Bild in voller Größe anzuzeigen)
Zusammenfassung
Im Idealfall sind eine Masterseite und ihre Inhaltsseiten vollständig voneinander getrennt und erfordern keine Interaktion. Wenn Sie jedoch über eine Gestaltungsvorlage oder Inhaltsseite verfügen, die Daten anzeigt, die von der Gestaltungsvorlage oder Inhaltsseite geändert werden können, müssen Sie möglicherweise sicherstellen, dass die Gestaltungsvorlage die Inhaltsseite (oder umgekehrt) benachrichtigt, wenn Daten geändert werden, damit die Anzeige aktualisiert werden kann. Im vorherigen Lernprogramm haben wir gesehen, wie eine Inhaltsseite programmgesteuert mit ihrer Masterseite interagiert. In diesem Lernprogramm haben wir uns angesehen, wie eine Masterseite die Interaktion initiiert.
Während die programmgesteuerte Interaktion zwischen einem Inhalt und einer Masterseite entweder von der Inhaltsseite oder der Masterseite stammen kann, hängt das verwendete Interaktionsmuster vom Ursprung ab. Die Unterschiede sind darauf zurückzuführen, dass eine Inhaltsseite nur über eine einzige Master-Seite verfügt, während eine Master-Seite viele verschiedene Inhaltsseiten enthalten kann. Anstatt dass eine Masterseite direkt mit einer Inhaltsseite interagiert, besteht ein besserer Ansatz darin, dass die Masterseite ein Ereignis einleitet, um zu signalisieren, dass eine Aktion stattgefunden hat. Die Inhaltsseiten, die sich für die Aktion interessieren, können Ereignishandler erstellen.
Glückliche Programmierung!
Weitere Lektüre
Weitere Informationen zu den in diesem Lernprogramm erläuterten Themen finden Sie in den folgenden Ressourcen:
- Zugreifen auf und Aktualisieren von Daten in ASP.NET
- Ereignisse und Stellvertretungen
- Übergeben von Informationen zwischen Inhalt und Masterseiten
- Arbeiten mit Daten in ASP.NET Lernprogrammen
Zum Autor
Scott Mitchell, Autor mehrerer ASP/ASP.NET Bücher und Gründer von 4GuysFromRolla.com, arbeitet seit 1998 mit Microsoft Web Technologies zusammen. Scott arbeitet als unabhängiger Berater, Trainer und Schriftsteller. Sein neuestes Buch ist Sams Teach Yourself ASP.NET 3.5 in 24 Stunden. Scott kann unter mitchell@4GuysFromRolla.com erreicht werden oder über seinen Blog unter http://ScottOnWriting.NET.
Besonderer Dank an
Diese Lernprogrammreihe wurde von vielen hilfreichen Prüfern überprüft. Leitender Prüfer für dieses Lernprogramm war Suchi Banerjee. Möchten Sie meine bevorstehenden MSDN-Artikel überprüfen? Wenn das der Fall ist, schreiben Sie mir eine Nachricht an mitchell@4GuysFromRolla.com