Лабораторная работа № 14-15 Создание приложения ASP.NET с использованием C# и

advertisement
-1–
Лабораторная работа № 14-15
Создание приложения ASP.NET с использованием C# и
хранением данных в ХML
1. ЦЕЛЬ РАБОТЫ
Целью работы является освоение методики создания приложений ASP.NET с
использованием C#, а также хранением данных в формате XML.
2. СОСТАВ РАБОЧЕГО МЕСТА
2.1. Оборудование: IBM-совместимый персональный компьютер (ПК).
2.2. Программное обеспечение: операционная система Windows, интегрированная
оболочка Visual Studio 2005 с установленным компонентом Visual C#.
3. КРАТКИЕ ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ
Создание классической страницы ASP
Страницу ASP можно воспринимать как набор из кода HTML и скриптов,
предназначенных для выполнения на сервере. Можно сказать, что основной смысл ASP
заключается в генерации кода HTML «на лету» при помощи серверных скриптов.
Например, можно создать страницу ASP, которая будет считывать данные из
источника данных (при помощи ADO) и представлять возвращаемые строки в виде кода
HTML.
В нашем примере страница ASP будет использовать встроенный объект Request для
считывания значений из входящей строки запроса и выводить полученные от клиента
данные в виде кода HTML. Можно сказать, что клиенту будет возвращаться эхо его
запроса. Вот код соответствующего скрипта (обратите внимание на блок <%.. ,%>, в
который помещен скрипт):
<%@ Languages-VBScript %> <!- VBScript вполне подходит для серверных скриптов ->
<HTML>
<HEAD>
<МЕТА NAME="GENERATOR" Content-Microsoft Visual Studio 7.0">
</HEAO>
<BODY>
<!• Возвращаем обратно то. что получили ->
<center>
<hl>You said: </hl>
<b>User Name: </b><%= Request.QueryStringC'txtUserName") %><br>
<b>Password: </b><%= Request.QueryString("txtPassword") %><br>
</center>
/<BODY>
</HTML>
Первое, что необходимо отметить, — на странице ASP используются те же теги <HTML>,
<HEAD> и <BOQY>, что и на обычной web-странице. Мы используем объект Request,
который, как и положено объектам, поддерживает некоторое количество свойств, методов
и событий. Для того чтобы извлечь данные в виде запроса от клиента, используется метод
Request .QueryString().
-2–
Можно сказать, что запись <%...%> означает: «Вставь это в HTTP-ответ». Кроме
того, мы можем получить полный контроль над тем, что возвращается пользователю, при
помощи объекта Response. Например:
<!- Возвращаем обратно то. что получили ->
<center>
<hl>You said: </hl>
<b>User Name: </b><%= Request.QueryStringC'txtUserName") %><br>
<b>Password: </b>
<%
dim pwd
pwd = Request.QueryStrlngC'txtPassword")
Response.Write (pwd)
%>
</center>
Для того чтобы запустить нашу страницу ASP, просто откроем файл default.htm,
введем в текстовые поля значения для имени пользователя и пароля и нажмем кнопку
Submit Сработает серверный скрипт ASP, и в окне браузера откроется сгенерированная на
основе ваших данных страница
приложение ASP.NET
Произведем следующую операцию: откроем файл default htm и внесем в него
следующие изменения (не забудем добавить к расширению файла ASP букву х):
<form narne-MainForrn
action="http://loca1host/Cars/Class1cASPPage.aspx"
method=post ID=Forml>
Затем изменим расширение нашего файла ASP на *.aspx и запустим наше приложение снова. Как можно убедиться, все будет работать так же, как и раньше.
Таким образом мы создали первое приложение ASP.NET. Достаточно было
изменить расширение файла классических ASP с *.asp на *.aspx. Вывод напрашивается
сам собой — то, что мы использовали в нашем файле классических ASP, используется и в
ASP.NET. Однако, конечно же, в ASP.NET достаточно много отличий от технологии
классических ASP
Структура ASPX-файла
ASPX-файл является, по сути, обычным HTML, в котором можно использовать
специальные теги. Дополнительные теги делятся на две категории: служебные, задающие
параметры страницы и позволяющие внедрять код, и теги контролов, которые
представляют собой новые интерфейсные конструкции, настройка которых
инкапсулирована в тег.
Первому типу принадлежат серверные директивы, теги <%= %>, <% %>,<%# %>,
<script runat="server">...</script>. Сначала рассмотрим директивы. Их синтаксис имеет вид
<%@ Directive %>
Базовой директивой является @ Page, которая описывает основные параметры
страницы, такие как файл с исходным текстом, язык кода, параметры трассировки. Также
используются директивы @ Import, @ Assembly, @ OutputCache и другие...
Теги <%= %> используются для выставки вычисляемых значений. Например,
конструкция <%= System.DateTime.Now %>
-3–
после компиляции будет вместо себя подставлять текущее время.
Теги <% %> позволяют вставлять код в страницу - то, что в основном используется
в ASP и JSP. Например, <%if (User.Identity.Name == "Admin")
{
%>
<a href="adminpage.htm">Перейти к странице администрирования<a>
<%
}
%>
отображает ссылку только для пользователя Admin.
Конструкция <%= %> является аналогом <%= %> для компонент с привязкой к
данным. Они подставляют вместо себя значение, зависящее от текущего контекста
данных. Приведем пример, который, однако, здесь подробно разобран не будет - привязка
к данным будет обсуждена в отдельной главе.
<asp:Repeater id="lstData"
runat="server" >
<ItemTemplate>
<%# (Container.DataItem as DateTime).ToShortDateString() %>
</ItemTemplate>
</asp:Repeater>
Также в страницу можно вставлять дополнительные методы с помощью тега <script
runat="server">: <script language="C#" runat="server" >
void SubmitBtn_Click( object sender, EventArgs e )
{
txtMessage.Text = "Hello, world";
}
</script>
Параметр language тега script задает язык, на котором он написан.
Теперь рассмотрим теги контролов - они позволяют вставлять в страницу
различные элементы управления. Многие из вас сразу вспомнят про стандартные
элементы управления вроде кнопок или полей ввода. На самом деле контролы ASP.NET
могут представлять не только стандартные элементы, кодируемые одним HTML-тегом, но
и довольно сложные DHTML-конструкции. При этом если при написании таких
конструкций в обычном HTML вы получаете громоздкий и нерасширяемый код, то при
использовании ASP.NET все это для вас инкапсулировано в одном теге. При этом код,
который будет подставляться генерируется на сервере, что позволяет изменять его в
зависимости, например, от типа броузера.
-4–
Теги серверных контролов допустимы только внутри серверных форм конструкций вида <form runat="server"> ... </form>. Сами теги контролов пишутся в XMLстиле - с обязательным закрыванием и пространствами имен. Общий вид такого тега:
<пространство_имен:имя_тега runat="server" > ... </пространство_имен:имя_тега >
Пространства имен используются для того, чтобы случайно не совпали имена
тегов. Стандартные элементы управления от Microsoft находятся в пространстве имен asp:
<asp:Button />, <asp:TextBox /> и т.п.
@ Page
Синтаксис всех директив сводится к указанию набора аттрибутов, им
соответствующих. Так что не будем каждый раз напоминать. что синтаксис таков: <%@
Directive {attribute = value} %> , а просто будем описывать названия основных аттрибутов
и их назначение.
AutoEventWireup Если этот аттрибут установлен в true, то обработчики
сообщений страницы (Page_Init и Page_Load) вызываются автоматически без явной
привязки.
AutoEventWireup=true
Buffer Включает/выключает буферизацию потока ответа - кода страницы при
отсылке на сервер.
ClassName Задает имя класса для страницы, который будет использован при
автоматической компиляции. Здесь не нужно указывать пространство имен.
ClassName="MyPage"
CodePage
Задает кодировку, в которой написан контент страницы
CodePage="1251"
Inherits
Указывает класс, от которого будет унаследован класс страницы.
Этот прием является обычным при разработке ASP.NET приложений. Так как сам класс
страницы генерируется автоматически, он перекомпилируется каждый раз при изменении
страницы. Чтобы отдельно контролировать код, создается класс, от которого затем
наследуется класс страницы.
Inherits="MyPage"
Language
Задает язык, который используется в блоках <% %> и <%= %>.
Lanugage="C#"
Src
Задает файл, в котором находится код страницы. Visual Studio .NET вместо
этого аттрибута использует механизм наследования через аттрибут Inherits.
Src="MyPage.aspx.cs"
Trace Включает/выключает трассировку. При включенной трассировке в конец
страницы автоматически дописыватся информация об обработке запроса. Также в нее
может быть добавлена дополнительная информация с помощью члена Trace класса Page.
Trace="true"
@ Import
Аналог директивы using в C# - делает доступными члены указанного пространства
имен без явного указания этого пространства. Синтаксис следующий: <%@ Import
namespace="пространство_имен" %>
@ Implements
-5–
Указывает, что класс страницы или элемента управления наследует данный
интерфейс. Синатксис: <%@ Implements interface="имя_интерфейса" %>
@ Assembly
Директива @ Assembly позволяет подключить к странице указанную сборку, чтобы
использовать раннее связывание на этапе компиляции. Синатксис: <%@ Assembly
Name="имя_сборки" %>
или для указания сборки через исходный текст (указанный файл будет
скомпилирован и связан): <%@ Import Src="имя_файла" %>
В ASP.NET коде, как и в любом другом коде под .NET, вы можете использовать
ADO.NET. Здесь можно использовать возможность сохранения датасета в XML и загрузки
его из XML, что упрощает разработку распределенных приложений на основе ASP.NET, в
частности полезно при передаче данных между веб-сервисами ASP.NET.
4. ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ
Порядок выполнения работы:
1. Составить программу для создания приложения ASP.NET, данные которого
можно будет хранить в XML по одному из вариантов, приведенных в следующей таблице.
Вводимые значения и результаты вывести на экран дисплея.
№ варианта Название приложения
1
Телефонный справочник
2
Коллекция аудио-дисков
3
Журнал посещений группы студентов
4
Список адресов филиалов банка
5
База преподавателей кафедры
6
База книг в библиотеке
7
Коллекция DVD-дисков
8
Адресный список банкоматов города
9
База поступивших/непоступивших на факультет студентов
10
База студентов проживающих в общежитии
2. Ввести программу с клавиатуры с использованием Visual Studio 2005.
3. Отладить программу и запустить на выполнение.
5. СОДЕРЖАНИЕ ОТЧЕТА
В отчете должны быть представлен текст программы, значения вводимых величин
и полученные значения выводимых величин.
-6–
6. ВОПРОСЫ ДЛЯ САМОКОНТРОЛЯ
1. Что такое страница ASP и приложение ASP? чем они отличаются?
2. Как создать приложение ASP?
3. Поясните структуру ASPX-файла.
4. Какие теги используются для выставки вычисляемых значений?
5. Какой атрибут задаёт кодировку, в которой написан контент страницы?
Download