carsGridView.DataBind();
sqlConn.Close();
}
‹/ script ›
‹html xmlns = "http://www.w3.org/1999/xhtml"›
…
‹/html›
Перед тем как погрузиться в детали обсуждения формата этого файла *.aspx, давайте выполним тестовый запуск страницы. Откройте окно командной строки Visual Studio 2005 и запустите утилиту WebDev.WebServer.exe, указав путь к сохраненному вами файлу Default.aspx.
webdev.webserver.exe /port:12345 /path:"C:\CodeTests\SinglePageModel"
Затем, открыв любой браузер, введите следующий адрес URL.
http://localhost:12345/
При загрузке страницы вы сначала увидите только типы Label и Button. Но когда вы щелкнете на кнопке, Web-серверу будет направлен вторичный запрос, в результате которого Web-элементы управления получат обратно соответствующие HTML-дескрипторы. На рис. 23.10 показан результат визуализации нашей страницы в окне Mozilla Firefox.
Рис. 23.10. Web-доступ к данным
Совсем просто, не правда ли? Но, как говорится, все зависит от мелочей, так что давайте рассмотрим немного подробнее композицию файла *.aspx.
Директива ‹%@Page%›
Прежде всего следует отметить то, что файл *.aspx обычно открывается набором директив. Директивы ASP.NET всегда обозначаются маркерами ‹%@ XXX %› и могут сопровождаться различными атрибутами, информирующими среду выполнения ASP.NET о том, как обрабатывать соответствующие данные.
Каждый файл *.aspx должен иметь, как минимум, директиву ‹%@Page%›, которая используется для определения управляемого языка, применяемого в рамках страницы (для этого используется атрибут language). Также директива ‹%@Page%› может определять имя соответствующего файла с внешним кодом поддержки (если таковой имеется), разрешать трассировку и т.д. Наиболее интересные атрибуты ‹%@Page%› описаны в табл. 23.2.
Таблица 23.2.Подборка атрибутов директивы ‹%@Page%›
Атрибут |
Описание |
CompilerOptions |
Позволяет определить любые флаги командной строки (представленные одной строкой), передаваемые компилятору при обработке страницы |
CodePage |
Указывает имя соответствующего файла с внешним кодом поддержки |
EnableTheming |
Индикатор поддержки тем ASP.NET 2.0 элементами управления данной страницы *.aspx |
EnableViewState |
Индикатор поддержки состояния представления между запросами страницы (более подробно об этом говорится в главе 24) |
Inherits |
Определяет класс страницы, из которой получается данный файл *.aspx; может быть любым классом, полученным из System.Web.UI.Page |
MasterPageFile |
Указывает шаблон страницы, используемый в паре с текущей страницей *.aspx |
Trace |
Индикатор разрешения трассировки |
Директива ‹%@Import%›
В дополнение к директиве ‹%@Page%› файл *.aspx может использовать различные директивы ‹%@Import%›, чтобы явно указать пространства имен, необходимые для текущей страницы. В нашем примере указано использование типов из пространства имен System.Data.SqlClient. Ясно, что при необходимости использования дополнительных пространств имен .NET нужно просто указать несколько директив ‹%@Import%›.
Замечание.Директива ‹%@lmport%› не является необходимой, если применяется модель страницы с внешним кодом поддержки. При использовании файла с внешним кодом поддержки для указания внешних пространств имен применяется ключевое слово using C#.
Опираясь на имеющиеся у вас знания .NET, вы можете поинтересоваться, почему в файле *.aspx нет указаний на пространства имен System.Data и System. Причина в том, что все страницы *.aspx автоматически получают доступ в ряду ключевых пространств имен, включай следующие.
• System
• System.Collections
• System.Collections.Generic
• System.Configuration
• System.IO
• System.Text
• System.Text.RegularExpressions
• Все пространства имен, связанные с System.Web
ASP.NET определяет ряд других директив, которые могут встречаться в файлах *.aspx как до, так и после ‹%Page%› и ‹%@Import%›, но их обсуждение предполагается привести позже.
Блок ‹script›
В соответствии с моделью одномодульной страницы файл *.aspx может содержать логику сценария серверной стороны, который должен выполняться на Web-сервере. Блоки программного кода, определенные для сервера, должны выполняться на сервере, поэтому для них используется атрибут runat="server". Если атрибут runat="server" не указан, среда выполнения предполагает, что соответствующий блок является сценарием клиента, который следует отправить с исходящим HTTP-ответом.
Читать дальше