Простое web-приложение для ASP.NET
В первой выделенной строке атрибуту runat присваивается значение server, указывающее на то, что код элемента должен выполняться на стороне сервера, а не на стороне клиента. В принципе код ASP.NET может работать и на стороне клиента, но это делается очень редко, поскольку многие возможности ASP.NET становятся недоступными (в сущности, при этом выполняется сценарий клиентской стороны, не имеющий ничего общего с ASP.NET).
Обратите внимание: все теги элементов страницы снабжаются префиксом <asp:. Дело в том, что элементы ASP.NET не являются элементами HTML. Они находятся на сервере, и обычные элементы HTML используются только в страницах, передаваемых клиенту (там, где это возможно). Так, в HTML не существует аналогов для таких элементов ASP.NET, как календарь или элемент интервальной проверки. В этом случае в ASP.NET для достижения желаемого эффекта используется комбинация обычных элементов HTML, сценарного кода и кода, работающего на стороне сервера.
Если дважды щелкнуть на кнопке, в окне программы открывается процедура события Click. Открывшаяся страница имеет много общего с приложениями, созданными на базе форм Windows; она тоже содержит автоматически сгенерированный код, который будет описан ниже. В приложениях ASP.NET код обычно отделяется от средств визуального представления и хранится в отдельном файле с двойным расширением .aspx.vb.
Включите в процедуру события Click следующий фрагмент:
Private Sub Buttonl_Click(ByVal sender As System.Object,_ ByVal e As System.EventArgs) Handles Buttonl.Click Me.Label 1.Font.Size = FontUnit.XLarge Me.Label 1.Text = "Welcome to ASP.NET @" & Now End Sub
Обратите внимание на сходство этого кода с обработчиками событий в приложениях форм Windows, включая наличие параметров sender и EventArgs. Свойство Font в web-элементах несколько отличается от одноименного свойства форм Windows, и это вполне естественно, поскольку количество шрифтов, отображаемых в страницах HTML, заметно ограничено по сравнению с формами Windows. Также обратите внимание на возможность использования встроенных функций .NET (таких, как Now) в коде ASP.NET. Приложения ASP.NET обладают полноценным доступом к .NET Framework. В частности, это означает, что для обращения к данным в ASP.NET могут использоваться все элементы и вся программная поддержка баз данных .NET (см. главу 11).
При нажатии клавиши F5 VS.NET IDE генерирует web-страницу и автоматически отображает ее в Internet Explorer. После нажатия кнопки окно приобретает вид, показанный на Рис. 12.2.
Рис. 12.2. Результат выполнения простейшего кода ASP.NET
Примечание
Приложения ASP.NET, как и другие классы приложений .NET, компилируются в библиотеки DLL.IDE генерирует для DLL файл описания сборки, хранящийся на сервере. В приложение ASP.NET также входит страница.aspx и другие сопутствующие файлы.
Ниже приведен полный код страницы с разверткой регионов:
Public Class WebForml Inherits System.Web.UI.Page Protected WithEvents Labell As System.Web.UI.WebControls.Label Protected WithEvents Buttonl As System.Web.UI.WebControls.Button #Region "Web Form Designer Generated Code " 'This call is required by the Web Form Designer. <System.Diagnostics.DebuggerStepThrough()> Private Sub _ InitializeComponent() End Sub Private Sub Page_Init(ByVal sender As System.Object. ByVal e As System.EventArgs) Handles MyBase.Init 'CODEGEN: следующий вызов необходим для дизайнера форм Web. ' Не изменяйте его в редакторе! InitializeComponent() End Sub #End Region Private Sub Page_Load(ByVal sender As System.Object._ ByVal e As System.EventArgs) Handles MyBase.Load ' Здесь размещается пользовательский код инициализации страницы End Sub Private Sub Bultonl_Click(ByVal sender As System.Object._ ByVal e As System.EventArgs) Handles Buttonl.Click Me.Label1.Font.Size_ FontUnit.XLarge Me.Label1.Text = "Welcome to ASP.NET @" & Now End Sub End Class
В ASP.NET используется файл globalasax – аналог файла global.asa из ASP. Главное различие между этими файлами заключается в том, что обращения к файлу global.asax происходят:
- в начале каждого запроса;
- при возникновении ошибки;
- при попытке аутентификации пользователя (процесс аутентификации рассматривается ниже).
Примечание
Если вы захотите добавить в global.asax код инициализации приложения, включите его в функцию InitializeComponent(), поскольку именно эта функция вызывается при загрузке приложения.