Читаем Язык программирования С# 2005 и платформа .NET 2.0. полностью

Однако в World Wide Web вы не можете делать такие роскошные предположения. Чтобы не быть голословными, давайте создадим новый Web-узел ASP.NET (с именем SimpleStateExample), содержащий один файл *.aspx. В файле с внешним кодом поддержки определим строковую переменную уровня страницы с именем userFavoriteCar.

public partial class _Default: Page {

 // Данные состояния?

 private string userFavoriteCar;

}

Далее, построим Web-интерфейс пользователя, показанный на рис. 24.1.

Рис. 24.1. Пользовательский интерфейс для страницы примера состояния

Обработчик события Click сервера для кнопки Указать… позволит назначить строковую переменную в соответствии со значением TextBox:

protected void btnSetCar_Click(object sender, EventArgs e) {

 // Сохранение информации о машине.

 userFavoriteCar = txtFavCar.Text;

}

а обработчик события Click для кнопки Прочитать… будет отображать текущее значение члена-переменной в поле элемента Label страницы.

protected void btnGetCar_Click(object sender, EventArgs e)

 // Присваивание тексту надписи значения члена-переменной.

 lblFavCar.Text = userFavoriteCar;

}

При построении приложения Windows Forms можно предполагать, что после установки пользователем начального значения это значение будет сохраняться в течение всего времени работы приложения. Запустив наше Web-приложение, вы, к сожалению, обнаружите, что при каждом вторичном обращении к Web-серверу значение строковой переменной userFavoriteCar снова возвращается в своему пустому начальному значению, так что поле текста Label будет постоянно оставаться пустым.

Снова подчеркнем, что HTTP не имеет никаких внутренних средств автоматического запоминания данных уже отправленного HTTP-ответа, и именно поэтому объект Page немедленно уничтожается. Когда клиент повторно обращается к файлу *.aspx, создается новый объект Page, переустанавливающий все члены-переменные уровня страницы. Это, очевидно, и оказывается главной проблемой. Представьте себе, каким бы неудобным был процесс заказа товаров, если бы каждый раз при обращении к Web-серверу вся введенная вами информация (например, о том, что вы хотите купить) пропадала. Если вам необходимо помнить информацию о пользователях, которые регистрируются на вашем узле, вам придется использовать различные приемы сохранения состояния объектов.

Замечание. Эта проблема касается не только ASP.NET. Сервлеты Java, CGI-, "классические" ASP-и РНР-приложения – всем этим технологиям также приходится решать проблемы управления состоянием.

Чтобы сохранить значение строкового типа userFavoriteCar в промежутке между повторными обращениями к серверу, можно запомнить значения этого типа в сеансовой переменной. Соответствующие подробности обработки состояния сеанса будут рассматриваться в следующих разделах. Но здесь для полноты мы приводим соответствующий программный код, необходимый для текущей страницы (заметьте, что здесь больше не используется приватный член-переменная строкового типа, так что не забудьте закомментировать или просто удалить его определение).

protected void btnSetCar_Click(object sender, EventArgs e) {

 Session["UserFavCar"] = txtFavcar.Text;

}

protected void btnGetCar_Click(object sender, EventArgs e) {

 lblFavCar.Text = (string)Session["UserFavCar"];

}

Если выполнить приложение теперь, то информация о любимой машине в промежутке между обращениями к серверу будет сохраняться благодаря объекту HttpSessionState, обрабатываемому с помощью унаследованного свойства

Исходный код. Файлы примера SimpleStateExample размещены в подкаталоге, соответствующем главе 24.

<p>Технологии управления состоянием ASP.NET</p>

ASP.NET предлагает целый ряд механизмов, которые можно использовать для поддержки информации состояния в Web-приложениях. В частности, у вас на выбор есть следующие варианты.

• Использование данных состояния представлений ASP.NET.

• Использование данных состояния элементов управления ASP.NET.

• Определение переменных уровня приложения.

• Использование объектов кэширования.

• Определение переменных сеансового уровня.

• Взаимодействие с данными cookie.

Мы рассмотрим детали каждого из указанных подходов по очереди, начиная с темы состояния представлений ASP.NET.

<p>Роль состояния представлений ASP.NET</p>
Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных