Интернет-магазин по продаже музыкальных CD и DVD дисков
3. Взаимодействие с БД
3.1 Архитектура ADO.NET
На сегодняшний момент существует множество технологий доступа к данным - ODBC, DAO, ADO и многие другие. Среда.NET Framework имеет свою собственную технологию доступа к данным - ADO.NET.
ADO.NET состоит из управляемых классов, позволяющих приложениям.NET подключаться к источникам данных (обычно реляционным базам данных), выполнять команды, осуществлять выборку, обработку и хранение данных.
В данной дипломной работе некоторые фрагменты текста отсутствуют или замещены на текст не соответствующий теме этого диплома. Отсутствуют или не соответствуют некоторые необходимые формулы, расчеты, диаграммы и таблицы. Для получения оригинальной версии работы пишите на электронный адрес, указанный в конце дипломной работы, в заключении.
Важным элементом автономного доступа к данным является контейнер для табличных данных, который не знает о СУБД. Такой контейнер представлен в ADO.NET классом DataSet или DataTable.
Архитектуру ADO.NET можно разделить на две фундаментальные части: подключённую и автономную. Все различные классы ADO.NET можно отнести к подключённой или автономной части. Единственным исключением является класс DataAdapter. Работающий как посредник между подключённой и автономной частями.
Подключённая часть содержит классы, которым для работы нужно доступное открытое соединение, чтобы взаимодействовать с источником данных. Сюда входят классы для установки подключения к источнику данных (Connection), управления транзакциями (Transaction), выполнения команд (Command) и другие.
К автономной части относятся классы, которым не требуется доступное открытое подключение. В данной дипломной работе некоторые фрагменты текста отсутствуют или замещены на текст не соответствующий теме этого диплома. Отсутствуют или не соответствуют некоторые необходимые формулы, расчеты, диаграммы и таблицы. Для получения оригинальной версии работы пишите на электронный адрес, указанный в конце дипломной работы, в заключении.
Далее на рисунке 4 представлена общая структура ADO.NET и то, как с помощью неё программа взаимодействует с источником данных.
Рис. 4 "Общая структура ADO.NET и её место в обеспечении доступа к данным"
Отличительной особенностью ADO.NET являются то, что для доступа к разным базам данных используются разный набор классов. В данной дипломной работе некоторые фрагменты текста отсутствуют или замещены на текст не соответствующий теме этого диплома. Отсутствуют или не соответствуют некоторые необходимые формулы, расчеты, диаграммы и таблицы. Для получения оригинальной версии работы пишите на электронный адрес, указанный в конце дипломной работы, в заключении. Классы автономной части ADO.NET являются одинаковыми для всех баз данных.
В данном пункте была рассмотрена технология доступа к данным ADO.NET, определено её место в обеспечении взаимодействия приложения с базой данных, а также рассмотрены основные классы, которые будут использоваться при разработке дипломного проекта.
3.2 Компоненты доступа к данным
В профессиональных, хорошо спроектированных приложениях код взаимодействия с базой данных никогда не встраивается непосредственно в код, лежащий в основе web-страницы. В данной дипломной работе некоторые фрагменты текста отсутствуют или замещены на текст не соответствующий теме этого диплома. Отсутствуют или не соответствуют некоторые необходимые формулы, расчеты, диаграммы и таблицы. Для получения оригинальной версии работы пишите на электронный адрес, указанный в конце дипломной работы, в заключении. Чтобы выполнить операцию с базой данных, необходимо создать экземпляр класса и вызвать соответствующий метод.
При разработке дипломного проекта был использован именно такой подход. Для каждой таблицы базы данных, с которой будет взаимодействовать web-приложения, создан свой компонент доступа к данным, включающий все необходимые методы. Методы объявлены как статические, таким образом, вызывать их можно непосредственно через имя класса, не создавая его экземпляр. Каждый метод осуществляет обработку ошибок при взаимодействии с БД и информирует об этом web-страницу, из которой он был вызван.
Например, в компоненте данных OrdersDB, находятся все необходимые методы для управления заказами покупателей, взаимодействующие с таблицами базы данных Orders и OrderDetails. Вызов метода, который возвращает позиции заказа с указанным номером, в коде web-страницы будет выглядеть следующим образом:
OrdersDB. GetOrderDetails(orderID);
При этом весь код взаимодействия с базой данных находится в этом методе:
public class OrdersDB
{
…
public static DataSet GetOrderDetails (int orderID)
{
SqlConnection conn = new SqlConnection (WebConfigurationManager. ConnectionStrings ["connStr"].ConnectionString);
SqlCommand cmd = new SqlCommand ("GetOrderDetails", conn);
…………………………………………………;
cmd. Parameters. Add ("OrderID", SqlDbType. Int);
cmd. Parameters ["OrderID"].Value = orderID;
…………………………………………….;
SqlDataAdapter da = new SqlDataAdapter(cmd);
try
{
da. Fill(ds);
………….;
return ds;
}
catch (SqlException)
{
……………;
return null;
}
}
…
)
На рисунке 5 изображена диаграмма классов всех компонентов доступа к данным.
Рис. 5 "Диаграмма классов компонентов доступа к данным"
Примечание.
· ArtistDB - взаимодействие с таблицей Artists(Исполнители);
· OrdersDB - взаимодействие с таблицами Orders(Заказы) и OrderDetails (Детали заказа);
· TypeProductDB - взаимодействие с таблицей TypeProduct (Категории продукции);
· CatalogDB - взаимодействие с таблицей Catalogue(Каталог);
· ResponsesDB - взаимодействие с таблицей Responses(Отзывы);
· TypePaymentDB - взаимодействие с таблицей TypePayment (Способы оплаты);
3.3 Привязка данных
Помимо механизмов извлечения информации из источника данных, современные web-приложения нуждаются в удобном способе отображения этой информации на web-странице. В данной дипломной работе некоторые фрагменты текста отсутствуют или замещены на текст не соответствующий теме этого диплома. Отсутствуют или не соответствуют некоторые необходимые формулы, расчеты, диаграммы и таблицы. Для получения оригинальной версии работы пишите на электронный адрес, указанный в конце дипломной работы, в заключении. Это означает, что не нужно вручную программировать логику циклического чтения строк, состоящих из многочисленного количества столбцов, и манипулирования отдельными элементами управления.
Например, чтобы отобразить на web-странице таблицу, содержащую позиции заказа, необходимо выполнить следующий код:
GridViewOrderDetails. DataSource = OrdersDB. GetOrderDetails(orderID); GridViewOrderDetails. DataBind();
Метод GetOrderDetails возвращает объект DataSet, содержащий результаты запроса к базе данных. Для того чтобы отобразить их на web-странице, используя привязку данных, необходимо присвоить DataSet специальному полю DataSource элемента управления (в данном случае GridView) и вызвать метод DataBind() элемента управления, чтобы выполнить привязку. В итоге на web-странице будет изображена таблица, содержащая позиции заказа с заданным номером.
Привязку данных можно также осуществлять с помощью элементов управления источниками данных. При разработке дипломного проекта использовался элемент управления источниками данных - ObjectDataSource, который для привязки данных использует компоненты доступа к данным. В данной дипломной работе некоторые фрагменты текста отсутствуют или замещены на текст не соответствующий теме этого диплома. Отсутствуют или не соответствуют некоторые необходимые формулы, расчеты, диаграммы и таблицы. Для получения оригинальной версии работы пишите на электронный адрес, указанный в конце дипломной работы, в заключении. Ниже приведён пример использования элемента управления источником данных ObjectDataSource при отображении отзывов покупателей об альбоме с заданным номером:
<asp: ObjectDataSource ID= "ObjectDataSource1" SelectMethod= "GetResponse" TypeName= "ComponentsDB. ResponseDB" runat= "server">
<SelectParameters>
<asp: QueryStringParameter Name= "ProductID" QueryStringField= "ProductID" Type= "Int32" />
………………….
</asp: ObjectDataSource>
…
<asp: GridView ID= "ResponsesGridView" DataSourceID=" ObjectDataSource1" runat= "server" />
Всё это выполняется декларативно в файле дескрипторов web-страницы. При этом можно указывать, откуда ObjectDataSource должен брать параметры запроса, если они необходимы. В данном случае параметр ProductID берётся из строки запроса.
3.4 Пример взаимодействия с БД
Ниже приведён пример взаимодействия web-приложения с базой данных, используя технологию ADO.NET и компоненты доступа к данным. Web-страница HistoryOrders.aspx выводит на экран таблицу, содержащую все заказы данного пользователя.
На странице HistoryOrders.aspx находится элемент управления GridView, предназначенный для отображения табличных данных:
<asp: GridView ID= "GridViewOrders" AutoGenerateColumns= "False" EnableViewState= "False"
ShowFooter= "true" SkinID= "GridViewStyle" runat= "server">
<Columns>
<asp: BoundField DataField= "OrderID" HeaderText= "Номер заказа" />
<asp: BoundField DataField= "OrderDate" DataFormatString={0:dd.MM.yy}
………………………………………………………………………………
<asp: BoundField DataField= "SendDate" HeaderText= "Дата отправки" HtmlEncode= "False" DataFormatString=" {0:dd.MM.yy}" NullDisplayText= "Неизвестна"/>
<asp: BoundField DataField= "ConditionName" HeaderText= "Состояние заказа" />
…………………………………………………………………….
<asp: BoundField DataField= "TotalPrice" DataFormatString={0:c} HtmlEncode= "false" HeaderText= "Цена"/>
…………………
<ItemTemplate>
<asp: HyperLink ID= "OrderDetailsHyperLink" Text= "Подробности" NavigateUrl='<%# "~/ProtectedPages/HistoryOrderDetails.aspx? OrderID=" + …………………………….
runat= "server" CssClass= "GridViewLink"></asp: HyperLink>
</ItemTemplate>
<ItemStyle Width= "100" />
……………………….
</Columns>
</asp: GridView>
Для доступа к базе данных используется компонент доступа к данным - OrdersDB, для выборки данных - метод OrdersDB. GetOrdersByUser
public static DataSet GetOrdersByUser (Guid userID)
{
SqlConnection conn = new SqlConnection (WebConfigurationManager. ConnectionStrings ["connStr"].ConnectionString);
…………………………………………………………
cmd. CommandType = CommandType. StoredProcedure;
cmd. Parameters. Add ("UserId", SqlDbType. UniqueIdentifier);
cmd. Parameters ["UserId"].Value = userID;
………………………………………
SqlDataAdapter da = new SqlDataAdapter(cmd);
try
{
da. Fill(ds);
………….
}
catch (SqlException)
{
conn. Close();
return null;
}
}
Хранимая процедура GetOrdersByUser, находящаяся на сервере базы данных:
CREATE PROCEDURE GetOrdersByUser (@UserId UNIQUEIDENTIFIER) AS
SELECT OrderID, OrderDate, SendDate, ConditionName, TypePaymentName, TotalPrice FROM OrdersView
WHERE UserId = @UserId
ORDER BY OrderDate
GO
В файле кода web-страницы HistoryOrders.aspx.cs вызывается метод GetOrdersByUser класса OrdersDB:
MembershipUser _user = Membership. GetUser (User. Identity. Name);
DataSet ds = OrdersDB. GetOrdersByUser((Guid)_user. ProviderUserKey);
if (ds == null)
{
……………………………….
}
GridViewOrders. DataSource = ds;
GridViewOrders. DataBind();
Компонент доступа к данным вызывает хранимую процедуру на сервере базы данных, передавая в неё в качестве параметра код пользователя. В данной дипломной работе некоторые фрагменты текста отсутствуют или замещены на текст не соответствующий теме этого диплома. Отсутствуют или не соответствуют некоторые необходимые формулы, расчеты, диаграммы и таблицы. Для получения оригинальной версии работы пишите на электронный адрес, указанный в конце дипломной работы, в заключении, и если была обнаружена ошибка при взаимодействии с БД, то осуществляется переход на страницу информации об ошибке.
В результате на web-страницы будет изображена таблица, представленная на рисунке 6.
Рис. 6 "История заказов покупателя"
4. Проектирование компонентов web-приложения
4.1 Общая структура web-приложения
4.1.1 Структура каталогов
На рисунке 7 изображена полная структура каталогов разработанного web-приложения.
Рис. 7 лист 1 "Структура каталога web-приложения"
Рис. 7 лист 2 "Структура каталога web-приложения"
Подкаталог AdminProtectedPages содержит web-страницы (файлы дескрипторов.aspx и файлы кода.cs), доступные только аутентифицированным пользователям, чьи учётные записи относятся к роли Administrator. Подробнее о ролях рассмотрено в пункте №. 4.5.3
Назначение web-страниц подкаталога AdminProtectedPages:
· AddProduct.aspx - добавление новых альбомов в;
· AdminDefault.aspx - страница по умолчанию интерфейса администратор;
· ManagementArtist.aspx - добавление, удаление и редактирование информации об;
· ManagementGenre.aspx - добавление, удаление и редактирование информации о;
· AdminFAQ.aspx - просмотр и ответ на вопросы пользователей;
· ManagementTypeProduct.aspx - добавление, удаление и редактирование информации о;
· Orders.aspx - просмотр заказов;
· OrdersDetails.aspx - детали заказа, печать накладной заказа, изменение состояния выполнения заказа;
· UpdateDeleteProduct.aspx - редактирование и удаление данных об.
Подкаталог ImageAlbum содержит обложки музыкальных альбомов.
Подкаталог App_Code содержит файлы пользовательских классов:
В данной дипломной работе некоторые фрагменты текста отсутствуют или замещены на текст не соответствующий теме этого диплома. Отсутствуют или не соответствуют некоторые необходимые формулы, расчеты, диаграммы и таблицы. Для получения оригинальной версии работы пишите на электронный адрес, указанный в конце дипломной работы, в заключении.
Подкаталог App_Theme содержит файл темы оформления и css-файл. (будут рассмотрены в пункте 4.2.3).
Подкаталог Images содержит изображения, используемые для оформления web-страниц.
Подкаталог MasterPages содержит файлы мастер-страниц, которые будут рассмотрены в пункте 4.2.1
Назначение web-страниц подкаталога MasterPages:
· UserMasterPage.master - мастер-страница интерфейса покупателя;
· AdminMasterPage.master - мастер-страница интерфейса администратора;
Подкаталог ProtectedPages содержит web-страницы (файлы дескрипторов.aspx и файлы кода.cs), доступные только аутентифицированным пользователям. Подробнее об аутентификации будет написано в пункте 4.5.2.
Назначение web-страниц подкаталога ProtectedPages:
· HistoryOrderDetails.aspx - подробности о;
· HistoryOrders.aspx - заказы покупателя;
· Order.aspx - оформление заказа;
· UserPersonalData.aspx - просмотр и редактирование личных данных покупателя, смена пароля, смена контрольного вопроса и ответа, управление подпиской;
Подкаталог UserControls, содержит файлы пользовательских элементов управления. Подробнее о пользовательских элементах управления написано в пункте 4.2.2.
Назначение пользовательских элементов управления:
· MenuAdmin.ascx - меню функций администратора;
· MenuAlphabet.ascx - алфавитное меню для поиска продукции по первой букве в названии;
· MenuGenres.ascx - панель поиска продукции по музыкальным жанрам;
· MenuUser.ascx - навигационная панель, отображает разные ссылки в завасимости от того аутентифицирован пользователь или нет, и к какой роли принадлежит его учётная запись;
· OrderSearch.ascx - панель поиска заказов;
· RandomAlbum.ascx - отображает случайный альбом из каталога;
· ShopInfo.ascx - навигационная панель;
В данной дипломной работе некоторые фрагменты текста отсутствуют или замещены на текст не соответствующий теме этого диплома. Отсутствуют или не соответствуют некоторые необходимые формулы, расчеты, диаграммы и таблицы. Для получения оригинальной версии работы пишите на электронный адрес, указанный в конце дипломной работы, в заключении
Страницы, находящиеся в корневом каталоге web-приложения доступны всем пользователям.
Назначение web-страниц корневого каталога:
· AddQuestion.aspx - добавление вопроса администрации магазина;
· CatalogList.aspx - отображает список альбомов в зависимости от указанных критериев поиска;
· Default.aspx - страница по;
· ErrorPage.aspx - отображается при ошибке работы с;
· FAQ.aspx - отображает вопросы покупателей и;
· InfoShop.aspx - информация по работе Интернет-магазина;
· TypePayment.aspx - информация о способах оплаты;
· Login.aspx - страница входа в Интернет-магазин (аутентификация и авторизация);
· PasswordRecovery.aspx - восстановление пароля;
· ProductDetails.aspx - отображает подробности о выбранном альбоме, добавление отзывов об альбоме;
· Registration.aspx - страница регистрации;
· Responses.aspx - отображает отзывы покупателей о выбранном альбоме;
· ShoppingCart.aspx - отображает товары, находящиеся в покупательской корзине;
Также в корневом каталоге находится конфигурационный файл web.config и файл обработчиков глобальных событий web-приложения. Подробнее о назначении этих файлов описано в пункте 4.1.2.
4.1.2 Файл конфигурации web-приложения web.config
Файл web.config является xml-файлом, позволяющий задавать различные настройки web-приложения, такие как методы аутентификации и авторизации пользователей, настройка системы профилей, управление доступа к каталогам, строки подключения к источникам данных и многие другие.
Всё содержимое конфигурационного файла вкладывается в корневой элемент <configuration>. В данной дипломной работе некоторые фрагменты текста отсутствуют или замещены на текст не соответствующий теме этого диплома. Отсутствуют или не соответствуют некоторые необходимые формулы, расчеты, диаграммы и таблицы. Для получения оригинальной версии работы пишите на электронный адрес, указанный в конце дипломной работы, в заключении:
· Строка подключения к БД
<connectionStrings>
<add name= "connStr"
connectionString="Data Source=localhost; Integrated
……………………………………………………….
providerName= "System. Data. SqlClient"/>
</connectionStrings>
· Конфигурация интерфейса MemberShip API, подробнее о котором написано в пункте 4.5.1.
<membership defaultProvider= "MyMembershipProvider">
<providers>
<add name= "MyMembershipProvider"
type= "System. Web. Security. SqlMembershipProvider"
…………………………………….
applicationName="/MusicInternetShop"
enablePasswordRetrieval= "true"
enablePasswordReset= "true"
…………………………………….
requiresQuestionAndAnswer= "true"
requiresUniqueEmail= "true"
……………………………….
minRequiredPasswordLength= "7"/>
</providers>
</membership>
· Конфигурация системы аутентификации, подробнее о которой написано в пункте 4.5.2
<authentication mode= "Forms">
<forms name= "CookieName"
loginUrl= "Login.aspx"
…………………….
slidingExpiration= "true"
cookieless= "AutoDetect"
protection= "All"
…………………….
path="/">
</forms>
</authentication>
· Конфигурация интерфейса Roles API, подробнее о котором написано в пункте 4.5.3.
<roleManager
defaultProvider= "MySqlProvider"
………………………………….
cookieName=".MyRoleCookie"
cookieTimeout= "20"
cookieSlidingExpiration= "true"
………………………………
createPersistentCookie= "false">
<providers>
<add name= "MySqlProvider"
type= "System. Web. Security. SqlRoleProvider"
………………………………………
applicationName="/MusicInternetShop"/>
</providers>
</roleManager>
· Конфигурация интерфейса Profiles API, подробнее о котором написано в пункте 4.6
<profile defaultProvider= "MySqlProvider" automaticSaveEnabled= "false">
<providers>
<add name= "MySqlProvider"
type= "System. Web. Profile. SqlProfileProvider"
…………………………………………
applicationName="/MusicInternetShop"/>
</providers>
<properties>
<add name= "Cart" type= "ComponentsShoppingCart. ShoppingCart" serializeAs= "Binary" allowAnonymous= "true"/>
…………………………………………………………………….
<add name= "SumPurchase" type= "decimal" serializeAs= "Binary"/>
</properties>
</profile>
Также в файле web.config находятся элементы конфигурации SMTP-сервера, уровни доступа к различным подкаталогам, модель генерации html-кода. Более подробное описание каждого элемента конфигурации приведено в соответствующих пунктах пояснительной записки. Полный код файла web.config приведён в приложении 1.
Файл global.asax позволяет определять обработчики событий, реагирующие на глобальные события web-приложения, такие как начало и завершение запроса, моменты завершения аутентификации и авторизации и многие другие. При разработке дипломного проекта был определён обработчик Profile_MigrateAnonymous, позволяющий переносить товары из временной корзины в корзину покупателя, когда пользователь входит в систему или регистрируется. Подробнее об этом написано в пункте 4.6.
4.2 Компоновка и оформление web-страниц
4.2.1 Мастер-страницы
Процесс создания web-приложения включает не только проектирование отдельных web-страниц, необходимо также обеспечить их интеграцию в завершённый, единообразный web-сайт. Каждая web-страница разрабатываемого web-приложения имеет содержит много одинаковых элементов, таких как различные заголовки, навигационные, поисковые и информационные панели. Для того чтобы использовать их на каждой web-странице, но при этом не размещать на ней их исходный код, а также обеспечить их одинаковое расположение, используются мастер-страницы.
Мастер-страницы представляют собой шаблоны web-страниц, которые могут определять фиксированное содержимое и объявлять часть web-страницы, в которую можно вставить динамическое содержимое. В данной дипломной работе некоторые фрагменты текста отсутствуют или замещены на текст не соответствующий теме этого диплома. Отсутствуют или не соответствуют некоторые необходимые формулы, расчеты, диаграммы и таблицы. Для получения оригинальной версии работы пишите на электронный адрес, указанный в конце дипломной работы, в заключении. Элемент Content является дескриптором верхнего уровня для страницы содержимого, она не содержит дескрипторов <html>, <head> и <body>, они наследуются из соответствующей мастер-страницы.
Чтобы связать страницу содержимого с необходимой мастер-страницей необходимо выполнить следующие действия:
· В директиве Page страницы содержимого указать путь к файлу мастер-страницы: MasterPageFile= "~/MasterPages/AdminMasterPage.master";
· В дискрипторе Content страницы содержимого полю ContentPlaceHolderID присвоить идентификатор элемента ContentPlaceHolder, расположенному на;
Ниже приведён текст мастер-страницы AdminMasterPage.master, для web-страниц, входящих в интерфейс администратора музыкального Интернет-магазина:
<%@ Master Language= "C#" AutoEventWireup= "true" CodeFile= "AdminMasterPage.master.cs"
Inherits= "MasterPages_AdminMasterPage"%>
<%@ Register Src="../UserControls/MenuAdmin.ascx" TagName= "MenuAdmin" TagPrefix= "uc"%>
<! DOCTYPE html PUBLIC "- //W3C //DTD XHTML 1.0 Transitional //EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
……………………………………………………………
<head runat= "server">
<title>Untitled Page</title>
</head>
<body>
<form id= "form1" runat= "server" style= "text-align: center;">
………………………………………………………….
<tr>
<td colspan= "2" style= "vertical-align: middle; text-align: center; height: 150px;">
……………………………………………………………………….
<div class= "HeaderPageFont2">Интерфейс администратора</div>
</td>
</tr>
<tr>
<td style= "width: 150px; vertical-align: top;">
…………………………………………….
</td>
<td style= "vertical-align: top; text-align: center; height: 700px; width: 850px;" class= "PageBackColor">
…………………………………………………………….
</asp: ContentPlaceHolder>
</td>
</tr>
<tr>
<td colspan= "2">
<span>copyright Луцкин Д.В. гр. №4231</span>
</td>
</tr>
………
</form>
</body>
</html>
Она определяет компоновку и расположение всех повторяющихся элементов и страницы-содержимого. В данной дипломной работе некоторые фрагменты текста отсутствуют или замещены на текст не соответствующий теме этого диплома. Отсутствуют или не соответствуют некоторые необходимые формулы, расчеты, диаграммы и таблицы. Для получения оригинальной версии работы пишите на электронный адрес, указанный в конце дипломной работы, в заключении. Каждая страница содержимого для данной мастер страницы будет иметь следующий шаблон:
<%@ MasterPageFile= "~/MasterPages/AdminMasterPage.master" …%>
<asp: Content ID= "Content1" ContentPlaceHolderID= "ContentPlaceHolder1" Runat= "Server">
Содержимое соответствующей web-страницы.
</asp: Content>
На рисунках 8 и 9 представлена компоновка мастер-страниц AdminMasterPage.master и UserMasterPage.master, для web-страниц, входящих в интерфейс покупателя и администратора, соответственно.
4.2.2 Пользовательские элементы управления
Ещё одним средством стандартизации компоновки web-страниц ASP.NET, использованным при разработке дипломного проекта, являются пользовательские элементы управления (UserControl). Пользовательский элемент управления - это небольшая часть страницы, которая может содержать статический HTML-код и серверные элементы управления ASP.NET. Один и тот же пользовательский элемент управления может использоваться на множестве web-страниц. Применение пользовательских элементов управления значительно облегчает процесс отладки и модификации, а также позволяет более гибко использовать механизм кэширования. Подробнее о кэшировании пользовательских элементов управления описано в пункте 5.2.1.
Как уже было сказано выше, пользовательские элементы управления, как и web-страницы могут содержать в себе статический HTML-код и серверные элементы управления ASP.NET, а также имеют такой же жизненный цикл. В данной дипломной работе некоторые фрагменты текста отсутствуют или замещены на текст не соответствующий теме этого диплома. Отсутствуют или не соответствуют некоторые необходимые формулы, расчеты, диаграммы и таблицы. Для получения оригинальной версии работы пишите на электронный адрес, указанный в конце дипломной работы, в заключении. Далее приведён пример регистрации пользовательского элемента управления MenuGenre.ascx в мастер-странице UserMasterPage.master:
Рис. 8 "Компоновка мастер-страницы AdminMasterPage.master"
131
Рис. 9 "Компоновка мастер-страницы UserMasterPage.master"
<%@ Register Src="../UserControls/MenuGenres.ascx" TagName= "MenuGenres" TagPrefix= "uc"%>, где
· Src - путь к исходному файлу;
· TagPrefix - префикс дескриптора;
· TagName - имя дескриптора;
После этого элемент управления можно использовать на web-странице:
<uc: MenuGenres ID= "MenuGenres1" runat= "server" />
При разработке дипломного проекта были созданы различные пользовательские элементы управления, их полный список и назначение приведены в пункте 4.1.1.
4.2.3 Каскадные таблицы стилей и темы оформления
Для того чтобы web-приложение имело единообразный визуальный стиль, необходимо настроить цвет фона каждой web-страницы и пользовательского элемента управления, задать шрифт и стиль каждой кнопки и надписи. В данной дипломной работе некоторые фрагменты текста отсутствуют или замещены на текст не соответствующий теме этого диплома. Отсутствуют или не соответствуют некоторые необходимые формулы, расчеты, диаграммы и таблицы. Для получения оригинальной версии работы пишите на электронный адрес, указанный в конце дипломной работы, в заключении. Поэтому для стандартизации элементов дизайна при разработке дипломного проекта использовались каскадные таблицы стилей (CSS) и темы оформления.
Каскадные таблицы стилей состоят из правил. Каждое из правил содержит набор атрибутов и их значений, определяющих формат элемента управления. Имя каждого правила состоит из двух частей. Часть правила, находящаяся слева от точки, указывает дескриптор, к которому оно будет применяться. Если перед точкой ничего не стоит, то правило может применяться к любому дескриптору. Справа от точки указывается уникальное имя, которое идентифицирует правило, оно называется именем класса CSS.
Например, правило HeaderSpanFont определяет шрифт Times New Roman, кегель 14, цвет - красный.
HeaderSpanFont
{
font-family: Times New Roman;
font-size: 14pt;
color: Red;
}
Это правило можно применить для форматирования текста элемента управления ASP.NET или HTML-дескриптора:
<div class=" HeaderSpanFont">Текст </div>
<asp: Label ID=" Label1" runat=" server" Text="" CssClass=""></asp: Label>
В данной дипломной работе некоторые фрагменты текста отсутствуют или замещены на текст не соответствующий теме этого диплома. Отсутствуют или не соответствуют некоторые необходимые формулы, расчеты, диаграммы и таблицы. Для получения оригинальной версии работы пишите на электронный адрес, указанный в конце дипломной работы, в заключении.
В отличие от каскадных таблиц стилей темы основаны на элементах управления, а не на HTML-дескрипторах. Ниже приведён фрагмент файла темы SkinFile.skin, в котором определяется внешний вид элемента управления GridView:
<asp: GridView runat= "server" SkinID= "GridViewStyle" BorderWidth= "1" BorderColor= "#dbdbc6">
<HeaderStyle BackColor= "#A52A2A" Font-Names= "Times New Roman" Font-Size= "12" ForeColor= "White" />
<RowStyle BackColor= "#F5F5DC" Font-Names= "Times New Roman" Font-Size= "12" HorizontalAlign= "Center" />
<AlternatingRowStyle BackColor= "#dbdbc6" Font-Names= "Times New Roman" Font-Size= "12" HorizontalAlign= "Center" />
<FooterStyle BackColor= "Aqua" HorizontalAlign= "Left" Font-Names= "Times New Roman" Font-Size= "10" Font-Bold= "true" />
………………………………………………….
<PagerStyle HorizontalAlign= "Center" Font-Names= "Times New Roman" Font-Size= "12" BackColor= "#A52A2A" Font-Bold= "true" ForeColor= "White" />
</asp: GridView>
У элемента управления может быть определено несколько вариантов оформления, для этого каждому варианту необходимо задать уникальное имя с помощью атрибута SkinID.
Применение каскадных таблиц стилей и тем оформления позволяет лучше стандартизировать оформление web-приложения и намного упрощает процесс модификации в дальнейшем.
4.3 Элементы управления проверкой достоверности
На некоторых страницах web-приложения от пользователя требуется ввести определённую информацию, например, регистрация нового покупателя или добавление альбома в каталог. В данной дипломной работе некоторые фрагменты текста отсутствуют или замещены на текст не соответствующий теме этого диплома. Отсутствуют или не соответствуют некоторые необходимые формулы, расчеты, диаграммы и таблицы. Для получения оригинальной версии работы пишите на электронный адрес, указанный в конце дипломной работы, в заключении. Для этого используется встроенный клиентский JavaScript-код. Однако проверка выполняется и на стороне сервера. Это необходимо, чтобы избежать возможных ошибок в случае вмешательства в JavaScript-код на стороне клиента. Эти элементы запускаются после загрузки страницы, но перед любыми другими событиями.
Ниже приведён пример использования элементов управления проверкой достоверности при разработке дипломного проекта:
<asp: TextBox ID= "Email" runat= "server" MaxLength= "50"></asp: TextBox> <asp: RequiredFieldValidator ID= "EmailRequired" runat= "server" ControlToValidate= "Email" ErrorMessage= "Вы забыли указать E-mail" ToolTip= "E-mail is required."
……. ……………………………………………………………………
<asp: RegularExpressionValidator ID= "EmailRegular" runat= "server" ValidationGroup= "CreateUserWizard1" ErrorMessage= "Недопустимый формат E-mail" ControlToValidate= "Email" ValidationExpression="\S+@\S+\.\S+">*</asp: RegularExpressionValidator>
<asp: ValidationSummary HeaderText= "Неправильно заполненные поля:" ID= "ValidationSummary1" Font-Size= "10" DisplayMode= "BulletList" ValidationGroup= "CreateUserWizard1" runat= "server" />
RequiredFieldValidator проверяет, чтобы пользователь не забыл ввести адрес электронной почты.
RegularExpressionValidator проверяет, чтобы введённый адрес соответствовал определённому формату, который определён с помощью регулярного выражения.
ValidationSummary отображает итоговую информацию об ошибках.
Применение элементов управления проверкой достоверности позволяет предотвратить ввод некорректной информации, а также экономит ресурсы сервера и ускоряет обратную связь с пользователем.
4.4 Класс web-страницы с возможностью отслеживания обновления
Когда пользователь нажимает на кнопку "Обновить" на панели управления браузера, происходит обновление текущей страницы. В данной дипломной работе некоторые фрагменты текста отсутствуют или замещены на текст не соответствующий теме этого диплома. Отсутствуют или не соответствуют некоторые необходимые формулы, расчеты, диаграммы и таблицы. Для получения оригинальной версии работы пишите на электронный адрес, указанный в конце дипломной работы, в заключении.
Страницы: 1, 2, 3, 4
|