void _Default_Error(object sender, EventArgs е) {
// Уничтожение текущего ответа, сообщение об сшибке
// и информирование среды выполнения о том,
// что ошибка обработана.
Response.Clear;
Response.Write("Извините… не могу найти необходимый файл.");
Server.ClearError;
}
protected void btnGetFile_Click(object sender, EventArgs e) {
// Попытка открыть несуществующий файл.
// Это порождает событие Error для данной страницы.
System.IO.File.ReadAllText(@"C:\IDontExist.txt");
}
…
}
Здесь обработчик события Error начинается с очистки всего содержимого имеющегося HTTP-ответа и вывода общего сообщения об ошибке. Чтобы получить доступ к конкретному объекту System.Exception, вы можете использовать метод HttpServerUtility.GetLastError, доступ к которому обеспечивает унаследованное свойство Server.
void _Default_Error(object sender, EventArgs e) {
Response.Clear;
Response.Write("Извините… не могу найти необходимый файл. ‹br›");
Response.Write(string.Format("Ошибка: ‹b›{0}‹/b›", Server.GetLastError.Message));
Server.ClearError;
}
Наконец, отметьте, что перед выходом из этого общего обработчика ошибок с помощью свойства Server явно вызывается метод HttpServerUtility.ClearError. Это необходимо, чтобы информировать среду выполнения о том, что проблема вами решена, и дальнейшего вмешательства системы не требуется. Если вы забудете сделать это, конечному пользователю будет предъявлено окно среды выполнения с сообщением об ошибке. На рис. 23.19 показан результат выполнения нашей процедуры обработки ошибок.
Рис. 23.19. Обработка ошибок на уровне страницы
В данный момент вы должны чувствовать себя довольно уверенно при работе с типом Page ASP.NET. Имея такую основу, вы теперь готовы перейти к выяснению роли Web-элементов управления ASP.NET.
Исходный код. Файлы примера PageLifeCycle размещены в подкаталоге, соответствующем главе 23.
Природа Web-элементов управления
Возможно, самым большим преимуществом ASP.NET является возможность компоновки пользовательского интерфейса страниц с помощью типов, определенных в пространстве имен System.Web.UI.WebControls. Соответствующие этим типам элементы управления (для которых могут использоваться названия
Вы уже видели, что при настройке Web-элемента управления в окне свойств Visual Studio 2005 ваши изменения записываются в определение этого элемента в файле *.aspx в виде набора пар имен и значений. Например, при добавлении нового TextBox в окне проектирования файла *.aspx и изменении свойств BorderStyle, BorderWidth, BackColor, BorderColor и Text средствами IDE открывающий дескриптор ‹asp:TextBox› может измениться так, как показано ниже.
‹asp:TextBox id=myTextBox runat="server" BorderStyle="Ridge" BorderWidth="5px" BackColor="PaleGreen" BorderColor="DarkOliveGreen" Text = "Привет, Старик!"
‹/asp:TextBox›
Поскольку HTML-декларация Web-элемента управления в конечном счете (в цикле динамический компиляции) становится членом-переменной из пространства имен System.Web.UI.WebControls, вы можете взаимодействовать с членами соответствующего типа в рамках блока ‹script› сервера или файла с внешним кодом поддержки страницы, например:
public partial class _Default: System.Web.UI.Page {
…
protected void btnChangeTextBoxColor_Click(object sender, EventArgs e) {
// Изменение данных HTTP-ответа для данного элемента.