
- •Начальное руководство по разработкеweb-приложений и asp.Net.
- •Разработка web-приложений и asp.Net
- •Web-приложения и web-серверы
- •Что такое виртуальные каталоги?
- •Структура документа html
- •Форматирование текста средствами html
- •Заголовки html
- •Html-редактор Visual Studio.Net
- •Разработка форм html
- •Создаем пользовательский интерфейс
- •Добавление изображений
- •Клиентские скрипты
- •Пример клиентского скрипта
- •Реализация проверки введенных пользователем данных
- •Передаем данные формы (методы geTиPost)
- •Синтаксис строки запроса http
- •Создание классической страницы asp
- •Принимаем данные, переданные методом post
- •Первое приложение asp.Net
- •Некоторые проблемы классических asp
- •Некоторые преимущества asp.Net
- •Пространства имен asp.Net
- •Наиболее важные типы пространства имен System.Web
- •Приложение и сеанс подключения пользователя
- •Создание простого web-приложения на с#
- •Исходный файл *.Aspx
- •Файл web.Config
- •Исходный файл Global.Asax
- •Простой код asp.Net на с#
- •Архитектура web-приложения asp.Net
- •Тип System.Web.Ui.Page
- •Связка *.Aspx/Codebehind
- •Свойство Page. Request
- •Свойство Page.Response
- •Свойство Page.Application
- •Отладка и трассировка приложений asp.Net
- •Элементы управления WebForm
- •Создание элементов управления WebForm
- •Иерархия классов элементов управления WebForm
- •Виды элементов управления WebForm
- •Базовые элементы управления WebForm
- •Группа переключателей
- •Текстовое поле для ввода нескольких строк с полосой прокрутки
- •Элементы управления с дополнительными возможности
- •Элемент управления Calendar
- •Элемент управления AdRotator (баннерная рулетка)
- •Элемент управления для работы с источниками данных
- •Элемент управления DataGrid
- •Еще немного об источниках данных
- •Элементы управления для проверки вводимых пользователем данных
- •Обработка событий элементов управления WebForm
- •Подведение итогов
- •Web-cлужбы
Синтаксис строки запроса http
Файл ASP, которому мы передаем данные из нашей формы, должен суметь извлечь эти данные из строки запроса. Сама строка запроса с данными формы выглядит как обычный адрес в адресной строке браузера с добавлением нескольких пар имя — значение:
http://loca1host/Cars/СlassicAspPage.asp?txtUserName= Chucky&txtPassword=somepassword&btnSubmit=Submit
Обратите внимание, что вся строка запроса разбивается на две части символом знака вопроса (?). Слева от знака вопроса находится адрес получателя данных, а справа — сами пары имя — значение (например, txtUserName=Chucky).
Как можно убедиться, каждая пара имя — значение отделена от другой пары символом амперсанда (&). Строка в нашем примере не представляет никаких сложностей для анализа, поскольку передаваемые значения очень просты. Однако, к примеру, если бы нам потребовалось поместить внутрь какого-либо значения пробел (Chucky заменить на Chucky Chuckles), то строка запроса выглядела бы уже следующим образом:
http://Iocalhost/Cars/ClassicAspPage.asp?txtUserName= Chucky+Chuckles&txtPassword=somepassword&btnSubmit=Submit
Таким образом, вместо пробелов в передаваемых значениях подставляется символ +. Если нам придет в голову поставить между Chucky и Chuckles пять пробелов, то строка запроса будет выглядеть так:
http://Iocalhost/Cars/ClassicAspPage.asp?txtUserName= Chucky+++++Chukles&txtPassworcl=somepassword&btnSubmit=Submit
А что будет, если в передаваемом значении попадутся какие-нибудь служебные символы? Они будут переданы в виде символа процента, за которым следует шестнадцатеричное значение соответствующего символа ASCII. Например, если пользователь придумал себе пароль, который выглядит как Hellо^77, то этот пароль будет передан так:
http://localhost/Cars/ClassicAspPage.asp?txtUserName= Chucky+++++Chuckles&txtPassword=Hello%5E77&btnSubmi t=Submit
Создание классической страницы asp
Наша форма уже в состоянии передавать данные, однако принимать их пока некому. Давайте ликвидируем этот недостаток нашего web-приложения и создадим страницу — приемник наших данных. Вначале мы создадим ее не на ASP.NET, а с помощью классических ASP.
Первое, с чего нам нужно начать — добавить новую страницу Active Server Page при помощи Visual Studio.NET (рис. 14.20). Присвоим этой странице то имя, которое мы указали в атрибуте action для формы (ClassicASPPage.asp) и сохраним ее в физическом каталоге, которому соответствует виртуальный каталог Cars.
Рис. 14.20. Добавление классического файла ASP
Страницу ASP можно воспринимать как набор из кода HTML и скриптов, предназначенных для выполнения на сервере. Можно сказать, что основной смысл ASP заключается в генерации кода HTML «на лету» при помощи серверных скриптов.
Например, можно создать страницу ASP, которая будет считывать данные из источника данных (при помощи ADO) и представлять возвращаемые строки в виде кода HTML.
В нашем примере страница ASP будет использовать встроенный объект Request для считывания значений из входящей строки запроса и выводить полученные от клиента данные в виде кода HTML. Можно сказать, что клиенту будет возвращаться эхо его запроса. Вот код соответствующего скрипта (обратите внимание на блок <%...%>, в который помещен скрипт):
<%@ Language=VBScript %>
<!- VBScript вполне подходит для серверных скриптов ->
<НТМL>
<HEAD>
<МЕТА NAME="GENERATOR" Content=Microsoft Visual Studio 7.0">
</HEAD>
<BODY>
<!- Возвращаем обратно то, что получили ->
<center>
<hl>You said: </hl>
<b>User Name: </b><%= Request.QueryString(“txtUserName") %><br>
<b>Password: </b><%= Request.QueryString(“txtPassword") %><br>
</center>
/<BODY>
</HTML>
Первое, что необходимо отметить, — на странице ASP используются те же теги <HTML>, <HEAD> и <BODY>, что и на обычной web-странице. Мы используем объект Request, который, как и положено объектам, поддерживает некоторое количество свойств, методов и событий. Для того чтобы извлечь данные в виде запроса от клиента, используется метод Request.QueryString().
Как же генерируется код HTML, который будет возвращен клиенту? Можно сказать, что запись <%...%> означает: «Вставь это в HTTP-ответ». Кроме того, мы можем получить полный контроль над тем, что возвращается пользователю, при помощи объекта Response. Например:
<!- Возвращаем обратно то, что получили -> <center>
<hl>You said: </hl>
<b>User Name: </b><%=Request.QueryString(“txtUserName")%><br>
<b>Password: </b>
<%
dim pwd
pwd = Request.QueryString(“txtPassword")
Response.Write(pwd)
%>
</center>
В типах Request и Response, конечно же, предусмотрено множество других очень полезных членов, кроме того, в распоряжении web-разработчика классических ASP также находится набор дополнительных объектов, таких как Session. Server, Application и ObjectContext. Мы не ставим своей целью в этой главе разобрать классические ASP во всех подробностях, поэтому эти объекты мы рассматривать не будем (информацию о них можно получить в электронной документации по Visual Studio). Однако отметим, что возможности этих типов реализованы в ASP.NET при помощи типа Page.
Для того чтобы запустить нашу страницу ASP, просто откроем файл default.htm, введем в текстовые поля значения для имени пользователя и пароля и нажмем кнопку Submit. Сработает серверный скрипт ASP, и в окне браузера откроется сгенерированная на основе ваших данных страница (рис. 14.21).
Рис. 14.21. Динамически созданная страница HTML
Наш пример, конечно, трудно отнести к разряду очень изощрённых, но он хорошо иллюстрирует основной принцип работы ASP (и ASP.NET): данные передаются через форму HTML, обрабатываются серверным скриптом, и результат возвращается пользователю в виде сгенерированного кода HTML.