Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lab4.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
1 Мб
Скачать
☆

Практическая часть

Задание 1. Запись данных в состояние отображения

В этом задании вы добавите пользовательские значения в объект ViewState и проте­стируете его, просматривая различные страницы.

  1. Создайте веб-сайт ASPNET с именем ClientState на языке C# с помощью Visual Studio.

  2. В новом проекте на страницу Default.aspx добавьте Label с именем Label1, кнопку Button1 и гиперссылку с именем HyperLink1. Присвойте свойству Hyperlink1.NavigateUrl значение Default2.aspx.

  3. Создайте вторую веб-форму с именем Default2.aspx, добавьте к ней надпись с име­нем Label1, кнопку Button1 и гиперссылку HyperLink1. Присвойте свойству HyperLinkl.NavigateUrl значение Default.aspx.

  4. В методы Page Load страниц Default.aspx и Default2.aspx добавьте код для записи те­кущего числа щелчков в объект ViewState и отображения этого значения в Label. Ниже приведен пример кода.

//C#

if (ViewState["clicks"] != null)

ViewState["clicks"] = (int)ViewState["clicks"] + 1;

else

ViewState["clicks"] = 1;

Label1.Text = " ViewState clicks: " + ((int)ViewState["clicks"]).ToString();

  1. Соберите веб-сайт и откройте страницу Default.aspx. Щелкните несколько раз кноп­ку и убедитесь, что счетчик щелчков увеличивается.

  2. Щелкните гиперссылку для загрузки страницы Default2.aspx. Обратите внимание, что счетчик вернулся к значению 1: значение, сохраненное в ViewState, потеряно, пото­му что открыта другая страница.

  3. Щелкните гиперссылку для загрузки страницы Default.aspx — счетчик снова будет сбро­шен. При переключении между страницами теряется вся информация ViewState.

Задание 2. Сохранение данных в скрытых полях

В этом задании вы добавите элемент управления HiddenField и используете его для сохранения данных состояния.

  1. Продолжите работу с проектом, созданным в предыдущем упражнении.

  2. На страницу Default.aspx добавьте элемент управления HiddenField с именем HiddenField1.

  3. В метод Page Load страницы Default.aspx добавьте код для записи числа щелчков в объект HiddenField1 и вывода этого значения в Label. Это демонстрирует следующий код:

//C#

protected void Page_Load(object sender, EventArgs e)

{

int clicks = 0;

int.TryParse(HiddenField1.Value, out clicks);

clicks++;

HiddenField1.Value = clicks.ToString();

Label1.Text = "HiddenField clicks: " + HiddenField1.Value;

}

  1. Заметьте, что свойство HiddenField.Value имеет тип String, поэтому перед его установ­кой требуется преобразовать данные в тип String, из-за чего этот метод сохранения данных менее удобен, чем другие.

  2. Соберите ваш веб-сайт и откройте страницу Default.aspx. Щелкните несколько раз кнопку и убедитесь, что счетчик щелчков увеличивается. При переходе на другую страницу значение HiddenField сбрасывается.

  3. Просмотрите код страницы Default.aspx в вашем браузере. Обратите внимание, что значение скрытого поля отображается в виде обычного текста.

Задание 3. Хранение данных в Cookie

В этом задании вы используете cookie для отслеживания щелчков пользователя.

  1. Продолжите работу с проектом, созданным в предыдущем упражнении.

  2. В методе Page_Load страниц Default.aspx и Default2.aspx добавьте код, извлекающий текущее число щелчков из cookie с именем «clicks», увеличивающий значение и со­храняющий его в том же cookie. Число щелчков должно отображаться в элементе управления Label. Как это делается, показано в следующем примере кода:

//С#

protected void Page_Load(object sender, EventArgs e)

{

// Получить значение из cookie

int cookieClicks;

if (Request.Cookies["clicks"] != null)

cookieClicks = int.Parse(Request.Cookies["clicks"].Value)+ 1;

else

cookieClicks = 1;

// Задать cookie для следующего визита

Response.Cookies["clicks"].Value = cookieClicks.ToString();

Label1.Text = "Cookie clicks: " + cookieClicks.ToString();

}

  1. Соберите ваш веб-сайт и посетите страницу Default.aspx. Щелкните несколько раз кнопку и убедитесь, что счетчик щелчков увеличивается.

  2. Щелкните ссылку, ведущую на страницу Default2.aspx. Заметьте, что счетчик не сбро­сился. С помощью cookie можно просматривать любые страницы на этом веб-сайте, получая доступ к одним и тем же значениям.

Задание 4. Хранение данных в строке запроса

В этом задании вы используете строку запроса для отслеживания щелчков пользо­вателя.

  1. Продолжите работу с проектом, созданным в предыдущем упражнении.

  2. В метод Page Load страниц Default.aspx и Default2.aspx добавьте код, извлекающий текущее число щелчков из параметра «clicks» строки запроса, увеличивающий это значение и сохраняющий новое значение в Hyperlink1.NavigateUrl. Число щелчков должно отображаться в элементе управления Label. Готовый код выглядит примерно так:

//C#

protected void Page_Load(object sender, EventArgs e)

{

if (!IsPostBack)

{

// Получить значение из строки запроса

int queryClicks;

if (Request.QueryString["clicks"] != null)

{

queryClicks = int.Parse(Request.QueryString["clicks"]) + 1;

}

else

{

queryClicks = 1;

}

// Задать строку запроса для гиперссылки

HyperLink1.NavigateUrl += "?clicks=" + queryClicks.ToString();

Label1.Text = "Query clicks: " + queryClicks.ToString();

}

}

  1. Соберите веб-сайт, откройте страницу Default.aspx и щелкните гиперссылку для загрузки Default2.aspx. Обратите внимание на увеличение значения счетчика.

  2. Несколько раз щелкните ссылки для перехода между страницами. Заметьте, что в состав URL включено число щелчков — эта информация не скрыта от пользователя.

  3. Если в адресной строке браузера вручную изменить значение кликов в 100, и нажать Enter, то ASP.NET увеличит значение кликов в 101.

  4. Если в адресной строке браузера вручную изменить значение кликов в Hello, и нажать Enter, то ASP.NET выдает ошибку, демонстрируя, что нечисловых значения никогда не будут успешно обработаны.

Если пользователь создаст закладку и позже вернется по ней на страницу или даже откроет ее на другом компьютере, значение счетчика щелчков сохранится. Кроме того, с помощью строк запроса можно отправлять электронную почту, создавать закладки для веб-страниц и сохранять состояние в URL. Соответствующую строку запроса необходи­мо включать во все ссылки на данной странице, иначе при переходе информация о со­стоянии будет потеряна.

Задание 5. Хранение данных в объекте Application

В этом задании вы добавите пользовательское значение в объект Application и проте­стируете работу браузера при просмотре различных страниц.

  1. В Visual Studio создайте веб-сайт ASP.NET ServerState на языке С#.

  2. В новом проекте на странице Default.aspx разместите следующие элементы управле­ния: надписи Label1 и Label2, а затем ссылку HyperLink1. Присвойте свойству Hyper Link1. NavigateUrl значение Default2.aspx.

  3. Создайте вторую веб-форму Default2.aspx, добавьте на нее надписи Label1, Label2 и ссылку HyperLink1. Присвойте свойству HyperLink1.NavigateUrl значение Default.aspx.

  4. Добавьте в проект файл Global.asax.

  5. В файле Global.asax откройте метод Application_Start и напишите код, инициализиру­ющий переменную типа Integer с именем clicks в объекте Application, как показано в следующем примере:

//C#

void Application_Start(object sender, EventArgs e)

{

// Код, исполняемый при запуске приложения

Application["clicks"] = 0;

}

  1. В метод Page_Load страниц Default.aspx и Default2.aspx добавьте код для подсчета щелчков в объекте Application. Не забывайте блокировать объект Application перед обновлением значения. Покажите значение в Label1. Вот как выглядит готовый код:

//C#

Application.Lock();

Application["clicks"] = ((int)Application["clicks"]) + 1;

Application.UnLock();

Label1.Text = string.Format("Application clicks: {0}", Application["clicks"].ToString());

  1. Создайте веб-сайт и посетите страницу Default.aspx. Щелкните ссылку несколько раз для перехода между страницами, убедитесь, что счетчик щелчков увеличивает значение.

  2. Откройте эту страницу в другом окне браузера. Обратите внимание, что счетчик учи­тывает щелчки, сделанные в первом окне, потому что объект Application яв­ляется общим для всех пользовательских сеансов.

  3. Перезапустите ваше веб-приложение и снова откройте эту страницу. Обратите внимание, что щелчок обнулился, поскольку объект Application не сохраняется при перезапуске приложения.

Задание 6. Хранение данных в объекте Session

В этом задании вы добавите пользовательские значения в объект Session и протес­тируете работу браузера при просмотре различных страниц.

  1. Продолжите работу с созданным в предыдущем примере проектом.

  2. В файле Global.asax добавьте к методу Session_Start код, инициализирующий пере­менную типа Integer с именем clicks в объекте Session, как показано в следующем примере:

//C#

void Session_Start(object sender, EventArgs e)

{

Session["session_clicks"] = 0;

}

  1. В метод Page_Load страниц Default.aspx и Default2.aspx добавьте код для подсчета щелчков в объекте Session. Не забывайте блокировать объект Application перед обнов­лением значения. Напишите код для вывода значения в Label2. Готовый код выгля­дит примерно так:

//C#

protected void Page_Load(object sender, EventArgs e)

{

Application.Lock();

Application["clicks"] = ((int)Application["clicks"]) + 1;

Application.UnLock();

Label1.Text = string.Format("Application clicks: {0}", Application["clicks"].ToString());

Session["session_clicks"] = (int)Session["session_clicks"] + 1;

Label2.Text = string.Format("Session clicks: {0}", Session["session_clicks"].ToString());

}

Обратите внимание: тип HiddenField.Value — String, поэтому перед записью в такое свойство необходимо преобразовывать все данные в тип String. Это менее удобно, чем другие методы хранения данных.

  1. Соберите веб-сайт и откройте страницу Default.aspx. Щелкните ссылку несколько раз для перехода между страницами, убедитесь, что значение счетчика щелчков как в Application, так и в Session увеличивается.

  2. Откройте эту страницу в другом браузере. Обратите внимание, что счетчик в Application учитывает щелчки, сделанные в первом браузере, поскольку объект Application является общим для всех пользовательских сеансов. В Session, напротив, учитываются только щелчки, сделанные в одном браузере.

  3. Перезапустите веб-сервер и снова откройте эту страницу. Заметьте, что оба счетчика обнулились, поскольку объекты Application и Session не сохраняются при перезаписи.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]