Книга: ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание
Роль атрибута AutoEventWireUp
Роль атрибута AutoEventWireUp
Чтобы обработать события для страницы, нужно добавить в блок ‹script› или файл с внешним кодом поддержки подходящий обработчик события. В отличие от ASP.NET 1.x. теперь не требуется вводить всю программную логику события вручную. Нужна только определить соответствующий метод, используя следующий шаблон.
protected Page_nameOfTheEvent(object sender, EventArgs e)
Например, cобытие Unload можно обработать так.
public partial class _Default: System.Web.UI.Page {
protected void Page_Load(object sender, EventArgs e) {
}
protected void Page_Unload(object sender, EventArgs e) {
}
}
Этот метод, как по волшебству, вызывается при выгрузке страницы (несмотря на то, что вы не применяли синтаксис событий C#), поскольку атрибут AutoEventWireUp устанавливается равным true (истина) по умолчанию в директиве ‹%@Page%› вашего файла *.aspx.
‹%@ Page Language="C#"
AutoEventWireup="true"
CodeFile="Default.aspx.cs" Inherits="_Default" %›
Как подсказывает имя этого атрибута, при его активизации будет создана необходимая оснастка событий в рамках автоматически генерируемого парциального класса, описанного в этой главе выше. Если установить этот атрибут равным false, не будут вызваны обработчики событий ни для Load, ни для Unload страницы Default (вы можете проверить это непосредственно, установив контрольные точки в пределах обработчиков событий Page_Load() и Page_Unload()).
Однако, если вы используете стандартный синтаксис событий C# для обработки событий Load и Unload, как показано ниже:
public partial class _Default: System.Web.UI.Page {
public _Default() {
// Явный перехват событий Load и Unload.
this.Load += new EventHandler(Page_Load);
this.Unload += new EventHandler(Page_Unload);
}
protected void Page_Load(object sender, EventArgs e) {
Response.Write("Сработало событие Load!");
}
protected void Page_Unload(object sender, EventArgs e) {
// Направить данные в HTTP-ответ здесь невозможно,
// поэтому выполняется запись в локальный файл.
System.IO.File.WriteAllText(@"C:MyLog.txt", "Выгрузка страницы.");
}
protected void btnPostback_Click(object sender, EventArgs e) {
// Здесь ничего не происходит, но это гарантирует
// вторичный запрос к странице.
}
}
то эти события будут перехвачены вашей страницей независимо от значения, заданного для AutoEventWireup.
В качестве заключительного замечания напомним, что с момента вызова события Unload вы не сможете взаимодействовать с подлежащим отправке HTTP-ответом (если вы попытаетесь вызвать члены объекта HttpResponse, среда выполнения сгенерирует соответствующее исключение). Поэтому здесь обработчик события Unload просто отправляет строку текста в файл на локальном диске C.
- Роль товарной категории и установление цены
- Роль папки Bin
- Контрольные вопросы
- Глава 14. Почему потребительский опыт играет важную роль в выстраивании клиентских взаимоотношений
- Запуск сценариев на удаленных машинах. Контроль за ходом выполнения таких сценариев
- З.1.2. Пароль BIOS не сбрасывается даже при удалении батарейки. Почему?
- Не хочу, чтобы компьютером пользовались в мое отсутствие. Как установить пароль и блокировать машину?
- Где лучше хранить свой пароль?
- Я забыл пароль входа в Windows, можно ли зайти в систему, не зная пароля?
- Есть ли возможность установить пароль на папку или файл?
- Роль типизации
- Во время загрузки появляется окно с запросом пароля, но раскладка используется русская, а у меня пароль на английском. К...