- •Java и c# технологии прикладного програмирования
- •Java и c# технологии прикладного програмирования
- •Содержание
- •Введение
- •Лабораторная работа № 1 Коллекции c#
- •Цель работы
- •Теоретические сведения
- •Общие сведения о платформе .Net
- •Общие сведения о коллекциях c#
- •Обобщенные коллекции с#
- •Порядок выполнения лабораторной работы
- •Задание на лабораторную работу
- •Содержание отчета
- •Получение информации о типе
- •Экземпляр типа Type
- •Получение экземпляра типа Type
- •Динамическая загрузка сборок
- •Динамическая загрузка типов
- •Исследование типа
- •Характеристики типа как целого
- •Члены класса
- •Динамическое создание объекта и вызов методов
- •Создание объекта по его типу
- •Динамический вызов методов
- •Использование интерфейсов
- •Позднее связывание
- •Динамическое приведение типов
- •Новые механизмы абстракции
- •Динамическое создание типов
- •Динамическое создание программного кода
- •Динамическое создание класса
- •Динамическое создание перечислений
- •Динамический "Hello World!"
- •Динамическое разворачивание циклов
- •Атрибуты
- •Атрибут это класс
- •Декларативное программирование
- •Код, выполняемый во время разработки
- •Использование атрибутов
- •Использование встроенных атрибутов
- •Определение и использование пользовательских атрибутов
- •Пример декларативного программирования
- •Порядок выполнения работы
- •Задание на лабораторную работу
- •Содержание отчета
- •Связный уровень взаимодействия ado.Net
- •Несвязный уровень взаимодействия ado.Net
- •Порядок выполнения работы
- •Задание на лабораторную работу
- •Содержание отчета
- •Связи между объектами в FluentNHibernate
- •Связь один к одному
- •Связь один ко многим
- •Связь многие ко многим
- •Способы выборки объектов в FluentNHibernate
- •Запросы NativeSql
- •Запросы по критерию
- •Запросы по образцу
- •Запросы hql
- •Порядок выполнения работы
- •Задание на лабораторную работу
- •Содержание отчета
- •Компиляция страниц по требованию
- •Страница asp.Net 2.0
- •Директива @Page
- •Жизненный цикл страницы
- •Новые свойства и методы объекта Page
- •Управление страницей
- •Установка выделения на элемент управления
- •Обновление данных без перезагрузки страницы
- •Отправка данных формы другой странице asp.Net
- •Шаблоны дизайна страниц
- •Создание шаблона дизайна
- •Создание страницы
- •Обработка шаблонов средой asp.Net
- •Использование разных шаблонов для разных браузеров
- •Порядок выполнения работы
- •Задание на лабораторную работу
- •Содержание отчета
- •Библиотеки модульного тестирования в .Net
- •Unit Testing Framework от Microsoft
- •Порядок выполнения работы
- •Задание на лабораторную работу
- •Содержание отчета
- •Контрольные вопросы
- •Рекомендованная литература
Создание шаблона дизайна
Шаблон дизайна страниц (Master pages) представляет собой обычную ASP.NET страницу, обладающую несколькими дополнительными атрибутами и свойствами и содержащую один или несколько специальных элементов управленияContentPlaceHolder. Для того чтобы преобразовать обычную страницу в шаблон, достаточно заменить директивуPageна директивуMaster.
После этого необходимо вставить в разметку страницы серверные элементы управления ContentPlaceHolderв те части страницы, где будет размещаться информация, не относящаяся к общему дизайну.
<%@Master Language=”C#”
CodeFile=”MainMaster.master.cs” Inherits=”MainMaster_master” %>
<html>
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Моя домашняя страница</title>
</head>
<body>
<table width="100%">
<tr>
<span id="PageTitle" runat="server"></span>
</tr>
<tr>
<table width="100%">
<tr>
<td>
<asp:contentplaceholder id="PageMenu" runat="server" />
</td>
<td>
<form runat="server">
<asp:contentplaceholder id="PageContent" runat="server" />
</form>
</td>
</tr>
</table>
</tr>
<tr>
<p align="right">Время: <span id="PageTime"
runat="server"></span></p>
</tr>
</table>
</body>
</html>
Также как и для обычной страницы, в файле программной логики можно работать с имеющимися элементами управления, создавать и добавлять новые, основываясь на параметрах запроса изменять страницу и ее поведение. Таким образом, можно вынести логику создания внешнего облика Web-приложения практически полностью в шаблон страницы.
Элемент управления ContentPlaceHolderпозволяет определить содержимое, которое будет использоваться в случае, если страница, использующая шаблон, не переопределит содержимое элемента управления.
<asp:contentplaceholder id="PageMenu" runat="server">
<ul>
<li><a href="Default.aspx">Главная страница</a></li>
<li><a href="Contents.aspx">Оглавление</a></li>
</ul>
</asp:contentplaceholder>
Работа с элементами управления страницы шаблона ничем не отличается от работы с элементами управления для обычной страницы. Таким же образом можно определить методы и свойства, которые будут доступны всем страницам использующим данный шаблон.
protected void Page_Load(object sender, EventArgs e) { PageTime.InnerText = DateTime.Now.ToShortDateString(); }
public string Title
{ get
{ return PageTitle.InnerText;
}
Set
{ PageTitle.InnerText = value;
}
}
Создание страницы
Использование шаблонов дизайна налагает свои требования на страницы. Поскольку шаблон содержит элементы управления ContentPlaceHolder, то страница должна содержать элементы управленияContent, содержащие код разметки и другие элементы управления, которые будут отображать на результирующей странице. На странице не должно быть каких-либо серверных элементов управления или кода разметки вне элементов управленияContent.
<%@Page Language=”C#” CodeFile=”Default.aspx.cs”
Inherits=”Default_aspx” MasterPageFile=”MainMaster.master”%>
<asp:content runat="server" id="MyMenu" contentplaceholderID="PageMenu">
<ul>
<li><a href="Page1.aspx">Страница 1</a></li>
<li><a href="Page2.aspx">Страница 2</a></li>
<li><a href="Page3.aspx">Страница 3</a></li>
</ul>
</asp:content>
<asp:content runat="server" ID="MyContent" contentplaceholderID="PageContent">
<asp:TextBox id="txtName" runat="server"></asp:TextBox> <asp:Button id="btnShow" runat="server" Text="Показать" OnClick="btnShow_Click" />
<br /><asp:PlaceHolder ID="PlaceHolder" runat="server"></asp:PlaceHolder>
</asp:content>
Также как и в случае с шаблоном, код логики страницы создается обычным образом. Единственное отличие в том, что страница не имеет собственных объектов вроде HeadControl, поэтому нужно использовать ссылку на страницу шаблона через свойствоMaster.
protected void Page_Load(object sender, EventArgs e)
{ if (!Page.IsPostBack)
Master.Page.Header.Title = "Домашняя страница";
}
protected void btnShow_Click(object sender, EventArgs e)
{ PlaceHolder.Controls.Add(new LiteralControl("<script> alert('Добрый день, " + txtName.Text + "'); </script>"));
Master.Page.Header.Title = "Добрый день, " + txtName.Text;
}
Для того чтобы привязать страницу к шаблону, используется атрибут MasterPageFileдирективыPage. Если же необходимо привязать один и тот же шаблон ко всем страницам в директории, то нет необходимости указывать атрибутMasterPageFileдля каждой страницы, достаточно задать базовый шаблон в файлеWeb.config.
<?xml version="1.0"?>
<configuration xmlns="http://schemas.microsoft.com/.NETConfiguration/v2.0">
<system.Web>
<pages master="MainMaster.master" />
</system.Web>
</configuration>
Кроме того, ASP.NET позволяет устанавливать тему оформления программным образом. Как было сказано выше, загрузка и связывание с шаблоном оформления происходит во время подготовки страницы к инициализации. Поэтому, если необходимо сменить шаблон оформления страницы, необходимо делать это в обработчике события PreInit.
protected void Page_PreInit(object sender, EventArgs e)
{ Page.MasterPageFile = "AnotherMaster.master";
}