Dieser Abschnitt führt Sie in die ASP.NET-Ereignisbehandlung ein.
Ein Ereignis ist eine Aktion oder ein Ereignis, beispielsweise ein Mausklick, ein Tastendruck, eine Mausbewegung oder eine vom System generierte Benachrichtigung. Ein Prozess kommuniziert durch Ereignisse. Interrupts sind beispielsweise vom System generierte Ereignisse. Wenn Ereignisse auftreten, können Anwendungen darauf reagieren und diese verwalten.
Ereignisse in ASP.NET werden auf dem Computer des Benutzers ausgelöst und auf dem Server verarbeitet. Beispielsweise klickt ein Benutzer auf eine Schaltfläche, die in einem Browser angezeigt wird. Es wird ein Klickereignis ausgelöst. Der Browser verarbeitet dieses clientseitige Ereignis, indem er es an den Server sendet.
Der Server verfügt über eine Unterroutine, die beschreibt, was zu tun ist, wenn ein Ereignis ausgelöst wird. Dies wird als Ereignishandler bezeichnet. Wenn die Ereignisinformationen an den Server übergeben werden, prüft dieser daher, ob das Klickereignis mit einem Ereignishandler verknüpft ist. Falls relevant, wird der Event-Handler ausgeführt.
ASP.NET-Ereignishandler akzeptieren normalerweise zwei Parameter und geben null zurück. Der erste Parameter stellt das Objekt dar, das das Ereignis auslöst, und der zweite Parameter ist der Ereignisparameter.
Die allgemeine Syntax für ein Ereignis lautet:
private void EventName (object sender, EventArgs e);
Die wichtigsten Bewerbungsereignisse sind:
Application_Start – Wird ausgelöst, wenn eine Anwendung oder Webseite gestartet wird.
Application_End – Wird beim Stoppen einer Anwendung oder Webseite ausgelöst.
Ebenso sind die am häufigsten verwendeten Sitzungsereignisse:
Session_Start – Wird ausgelöst, wenn der Benutzer zum ersten Mal eine Seite von der Anwendung anfordert.
Session_End – Wird ausgelöst, wenn die Sitzung endet.
Häufige Seiten- und Steuerelementereignisse sind:
DataBinding – Wird ausgelöst, wenn ein Steuerelement an eine Datenquelle gebunden ist.
Entsorgt – Wird ausgelöst, wenn die Seite oder das Steuerelement freigegeben wird.
Fehler – Es handelt sich um ein Seitenereignis, das auftritt, wenn eine nicht behandelte Ausnahme vorliegt.
Init – Wird beim Initialisieren einer Seite oder eines Steuerelements ausgelöst.
Laden – Wird ausgelöst, wenn eine Seite oder ein Steuerelement geladen wird.
PreRender – Wird ausgelöst, wenn die Seite oder das Steuerelement angezeigt wird.
Entladen – Wird ausgelöst, wenn eine Seite oder ein Steuerelement aus dem Speicher entladen wird.
Alle ASP.NET-Steuerelemente sind als Klassen implementiert und lösen Ereignisse aus, wenn der Benutzer eine bestimmte Aktion an ihnen ausführt. Wenn ein Benutzer beispielsweise auf eine Schaltfläche klickt, wird ein „Klick“-Ereignis generiert. Für die Verarbeitung von Ereignissen gibt es integrierte Eigenschaften und Ereignishandler. Anwendungen zur Ereignisbehandlung sind so codiert, dass sie auf ein Ereignis reagieren und entsprechende Maßnahmen ergreifen.
Standardmäßig erstellt Visual Studio einen Ereignishandler, der eine Unterroutine enthält, die die Klausel verarbeitet. Diese Klausel benennt die Steuerelemente und Ereignisse, die das Programm verarbeitet.
ASP-Tag zur Tastensteuerung:
<asp:Button ID="btnCancel" runat="server" Text="Cancel" />
Event-Handling-Anwendung für Click-Event:
Protected Sub btnCancel_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnCancel.ClickEnd Sub
Ein Ereignis kann auch ohne eine Handles-Klausel codiert werden. Der Handler muss dann nach dem entsprechenden Ereignis benannt werden, das zur Eigenschaft des Steuerelements passt.
ASP-Tag zur Tastensteuerung:
<asp:Button ID="btnCancel" runat="server" Text="Cancel" Onclick="btnCancel_Click" />
Event-Handling-Anwendung für Click-Event:
Protected Sub btnCancel_Click(ByVal sender As Object, ByVal e As System.EventArgs)End Sub
Zu den häufigsten Kontrollereignissen gehören:
Ereignis | Eigentum | Kontrolle |
---|---|---|
Klicken | OnClick | Schaltfläche, Bildschaltfläche, Linkschaltfläche, Bildbitmap |
Befehl | OnCommand | Schaltfläche, Bildschaltfläche, Linkschaltfläche |
Text geändert | OnTextChanged | Textfeld |
SelectedIndexChanged | OnSelectedIndexChanged | Dropdown-Menü, Listbox, Optionsfeldliste, Listbox mit Kontrollkästchen |
GeprüftGeändert | OnCheckedChanged | Kontrollkästchen, Optionsfeld |
Einige Ereignisse führen dazu, dass das Formular sofort an den Server zurückgesendet wird. Diese Ereignisse werden als Rückrufereignisse bezeichnet. Klicken Sie beispielsweise auf Ereignisse wie „Button.Click“.
Einige Ereignisse werden nicht sofort an den Server zurückgesendet. Diese werden als Nicht-Rückrufereignisse bezeichnet.
Ändern Sie beispielsweise Ereignisse oder Auswahlereignisse wie TextBox.TextChanged oder CheckBox.CheckedChanged. Diese Nicht-Rückrufereignisse können sofort zurückgerufen werden, indem ihre AutoPostBack-Eigenschaft auf „true“ gesetzt wird.
Das Standardereignis für Seitenobjekte ist das Ladeereignis. Ebenso verfügt jedes Steuerelement über ein Standardereignis. Das Standardereignis für ein Schaltflächensteuerelement ist beispielsweise das Click-Ereignis.
Standard-Ereignishandler können in Visual Studio einfach durch Doppelklicken auf ein Steuerelement in der Entwurfsansicht erstellt werden. Die folgende Tabelle zeigt die Standardereignisse für eine Liste allgemeiner Steuerelemente:
Kontrolle | Standardereignis |
---|---|
Werbesteuerung (AdRotator) | Anzeige erstellt |
Artikelliste (BulletedList) | Klicken |
Taste | Klicken |
Kalendersteuerung (Kalender) | Auswahl geändert |
CheckBox | GeprüftGeändert |
CheckBoxList | SelectedIndexChanged |
DataGrid | SelectedIndexChanged |
Datenliste | SelectedIndexChanged |
DropDownList | SelectedIndexChanged |
HyperLink | Klicken |
ImageButton | Klicken |
Hotspot (ImageMap) | Klicken |
Hyperlink-Schaltfläche (LinkButton) | Klicken |
Dropdown-Liste für Einzel- oder Mehrfachauswahl (ListBox) | SelectedIndexChanged |
Speisekarte | MenuItemClick |
RadioButton | GeprüftGeändert |
Optionsfeldgruppe (RadioButtonList) | SelectedIndexChanged |
Beispiel
Dieses Beispiel enthält eine einfache Seite mit Steuerelementbeschriftungen und einem Schaltflächensteuerelement. Wenn Seitenereignisse wie Page_Load, Page_Init, Page_PreRender usw. auftreten, wird eine Nachricht gesendet, die vom Label-Steuerelement angezeigt wird. Wenn auf eine Schaltfläche geklickt wird, wird das Button_Click-Ereignis ausgelöst und außerdem eine von der Beschriftung angezeigte Nachricht gesendet.
Erstellen Sie eine neue Website und ziehen Sie ein Label-Steuerelement und ein Button-Steuerelement aus der Steuerelemente-Toolbox. Legen Sie mithilfe der Fenstereigenschaften die Steuerelement-IDs entsprechend auf .lblmessage und .btnclick fest. Setzen Sie die Texteigenschaft des Schaltflächensteuerelements auf „Klicken“.
Markup-Datei (.aspx):
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="eventdemo._Default" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>Untitled Page</title> </head> <body> <form id="form1" runat="server"> <div> <asp:Label ID="lblmessage" runat="server" > </asp:Label> <br /> <br /> <br /> <asp:Button ID="btnclick" runat="server" Text="Click" onclick="btnclick_Click" /> </div> </form> </body></html>
Doppelklicken Sie auf die Entwurfsansicht und wechseln Sie zum Code hinter der Datei. Das Page_Load-Ereignis wird automatisch und ohne Code erstellt. Schreiben Sie die folgende selbsterklärende Codezeile:
using System;using System.Collections;using System.Configuration;using System.Data;using System.Linq;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.HtmlControls;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Xml.Linq;namespace eventdemo { public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { lblmessage.Text += "Page load event handled. <br />"; if (Page.IsPostBack) { lblmessage.Text += "Page post back event handled.<br/>"; } } protected void Page_Init(object sender, EventArgs e) { lblmessage.Text += "Page initialization event handled.<br/>"; } protected void Page_PreRender(object sender, EventArgs e) { lblmessage.Text += "Page prerender event handled. <br/>"; } protected void btnclick_Click(object sender, EventArgs e) { lblmessage.Text += "Button click event handled. <br/>"; } }}
Seite ausführen. Tags zeigen Seitenlade-, Seiteninitialisierungs- und Seitenvorschauereignisse an. Klicken Sie auf die Schaltfläche, um den Effekt zu sehen: