В этом разделе вы познакомитесь с обработкой событий ASP.NET.
Событие — это действие или событие, например щелчок мыши, нажатие клавиши, движение мыши или любое уведомление, созданное системой. Процесс взаимодействует посредством событий. Например, прерывания — это события, генерируемые системой. Когда происходят события, приложения могут реагировать на них и управлять ими.
События в ASP.NET создаются на компьютере пользователя и обрабатываются на сервере. Например, пользователь нажимает кнопку, отображаемую в браузере. Возникает событие щелчка. Браузер обрабатывает это событие на стороне клиента, отправляя его на сервер.
На сервере есть подпрограмма, описывающая, что делать при возникновении события; она называется обработчиком событий. Поэтому, когда информация о событии передается на сервер, он проверяет, связано ли событие щелчка с обработчиком событий. Если необходимо, будет выполнен обработчик событий.
Обработчики событий ASP.NET обычно принимают два параметра и возвращают ноль. Первый параметр представляет объект, запускающий событие, а второй параметр — это параметр события.
Общий синтаксис события:
private void EventName (object sender, EventArgs e);
Наиболее важными событиями приложения являются:
Application_Start — возникает при запуске приложения или веб-страницы.
Application_End — возникает при остановке приложения или веб-страницы.
Аналогично, наиболее часто используемые события сеанса:
Session_Start — срабатывает, когда пользователь первоначально запрашивает страницу из приложения.
Session_End – возникает, когда сеанс заканчивается.
Общие события страниц и элементов управления:
DataBinding — возникает, когда элемент управления привязан к источнику данных.
Dispose — поднимается, когда страница или элемент управления освобождаются.
Ошибка . Это событие страницы, которое возникает при возникновении необработанного исключения.
Init — вызывается при инициализации страницы или элемента управления.
Загрузить — вызывается при загрузке страницы или элемента управления.
PreRender — вызывается при отображении страницы или элемента управления.
Выгрузить — вызывается, когда страница или элемент управления выгружаются из памяти.
Все элементы управления ASP.NET реализованы как классы и вызывают события, когда пользователь выполняет над ними определенное действие. Например, когда пользователь нажимает кнопку, генерируется событие «Клик». Для обработки событий существуют встроенные свойства и обработчики событий. Приложения для обработки событий запрограммированы так, чтобы реагировать на событие и предпринимать по нему соответствующие действия.
По умолчанию Visual Studio создает обработчик событий, включающий подпрограмму, обрабатывающую это предложение. В этом предложении именуются элементы управления и события, которые обрабатывает программа.
Тег ASP для управления кнопками:
<asp:Button ID="btnCancel" runat="server" Text="Cancel" />
Приложение для обработки событий Click:
Protected Sub btnCancel_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnCancel.ClickEnd Sub
Событие также можно закодировать без предложения Handles. Затем обработчик должен быть назван в честь соответствующего события, соответствующего свойству элемента управления.
Тег ASP для управления кнопками:
<asp:Button ID="btnCancel" runat="server" Text="Cancel" Onclick="btnCancel_Click" />
Приложение для обработки событий Click:
Protected Sub btnCancel_Click(ByVal sender As Object, ByVal e As System.EventArgs)End Sub
К общим событиям управления относятся:
событие | свойство | контроль |
---|---|---|
Нажмите | OnClick | кнопка, кнопка изображения, кнопка ссылки, растровое изображение |
Команда | По команде | кнопка, кнопка изображения, кнопка ссылки |
ТекстChanged | OnTextChanged | текстовое поле |
ВыбранныйИндексChanged | Онселектединдексчанжед | Выпадающее меню, список, список переключателей, список с флажками |
ПровереноИзменено | OnCheckedChanged | флажок, переключатель |
Некоторые события приводят к немедленной отправке формы обратно на сервер, они называются событиями обратного вызова. Например, события щелчка, такие как Button.Click.
Некоторые события не отправляются обратно на сервер немедленно. Они называются событиями без обратного вызова.
Например, события изменения или события выбора, такие как TextBox.TextChanged или CheckBox.CheckedChanged. Эти события без обратного вызова можно немедленно вызвать обратно, установив для их свойства AutoPostBack значение true.
Событием по умолчанию для объектов страницы является событие загрузки. Аналогично, каждый элемент управления имеет событие по умолчанию. Например, событием по умолчанию для элемента управления «Кнопка» является событие Click.
Обработчики событий по умолчанию можно создать в Visual Studio, просто дважды щелкнув элемент управления в представлении «Дизайн». В следующей таблице показаны события по умолчанию для списка общих элементов управления:
контроль | событие по умолчанию |
---|---|
Контроль рекламы (AdRotator) | Объявление создано |
Список предметов (маркированный список) | Нажмите |
Кнопка | Нажмите |
Управление календарем (Календарь) | ВыборИзменен |
Флажок | ПровереноИзменено |
Список флажков | ВыбранныйИндексChanged |
DataGrid | ВыбранныйИндексChanged |
Список данных | ВыбранныйИндексChanged |
DropDownList | ВыбранныйИндексChanged |
Гиперссылка | Нажмите |
Кнопка изображения | Нажмите |
Горячая точка (ImageMap) | Нажмите |
Кнопка гиперссылки (LinkButton) | Нажмите |
Раскрывающийся список с одним или несколькими вариантами выбора (ListBox) | ВыбранныйИндексChanged |
Меню | МенюПунктНажмите |
Радиокнопка | ПровереноИзменено |
Группа переключателей (RadioButtonList) | ВыбранныйИндексChanged |
Пример
Этот пример включает простую страницу с метками элементов управления и элементом управления «Кнопка». Когда происходят события страницы, такие как Page_Load, Page_Init, Page_PreRender и т. д., она отправляет сообщение, которое будет отображаться элементом управления меткой. При нажатии кнопки возникает событие Button_Click, а также отправляется сообщение, отображаемое меткой.
Создайте новый веб-сайт и перетащите элементы управления «Метка» и «Кнопка» из панели инструментов «Элементы управления». Используя свойства окна, установите для идентификаторов элементов управления .lblmessage и .btnclick соответственно. Установите для свойства текста элемента управления «Кнопка» значение «Клик».
Файл разметки (.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>
Дважды щелкните представление дизайна и перейдите к коду файла. Событие Page_Load создается автоматически без какого-либо кода. Напишите следующую понятную строку кода:
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/>"; } }}
Страница выполнения. Теги показывают загрузку страницы, инициализацию страницы и события предварительного просмотра страницы. Нажмите кнопку, чтобы увидеть эффект: