Программирование серверных элементов управления и работа с обратным вызовом tutorial 08

asp

Вступительное слово. В этом задании необходимо написать программный код для страницы FeedbackForm.aspx для манипулирования свойствами элементов управления на этой странице, так что бы в конкретных ситуациях в браузер направлялся соответствующий ответ. Например, нужно устанавливать свойство Text элемента управления Label для предоставления информации конкретному пользователю.

Программирование серверных элементов управления и работа с обратным вызовом

Также нужно написать код, который определяет, будет ли страница FeedBackForm.aspx загружена в качестве реакции на обратный вызов (постбэк).

1. Организовать управление событием Click для объекта ImageMap.

а) Вернуться на страницу Survey.aspx.

б) В меню View выберать пункт Code (Перейти к коду) – откроется файл Survey.aspx.cs.

в) Добавить защищеный метод с именем imgMap_Click для класса Survey. Метод должен  возвращать void. Кроме того, процедура должна принимать два  параметра:

  • параметр 1: имя — sender тип – object;
  • параметр 2: имя — е тип – ImageMapEventArgs:

protected void imgMap_Click(object sender, ImageMapEventArgs e)

{

}

г) Добавить в метод imgMap_Click код, который устанавливает свойство Value элемента управления hdnRegion в значение свойства PostBackValue из параметра  ImageMapEventArgs:

hdnRegion.Value = e.PostBackValue;

Этот метод обрабатывает событие Click элемента управления ImageMap, который был добавлен на веб-странице в задании 2.

2. Создать обработку свойства OnClientClick и серверного события Click для кнопки Подтвердить.

а) Открыть страницу FeedbackForm.aspx в режиме конструктора.

б) Кликните кнопку Подтвердить, а затем в окне Свойств установите ее свойство OnClientClick в следующий код JavaScript:

return confirm(‘Вы уверены, что хотите подтвердить  введенные данные?’)

Этот код, который работает в веб-браузере. Он позволяет пользователям решать, готовы ли они передать свои данные обратной связи из round-trip на сервер.

в) Дважды кликнуть кнопку Подтвердить, чтобы перейти к коду его серверного обработчика событий по умолчанию.

г) Добавьте в обработчик событий код, который устанавливает свойство Text объекта lblTo в значение конкатенации следующих значений:

  • Спасибо вам за отзыв. Ваш комментарий <br /><em>
  • свойство Text объекта TextBox1
  • </ EM><br /> был записан:

д) Добавить в обработчик события код для выполнения следующих действий:

lblTo.Text = «Спасибо вам за отзыв. Ваш комментарий <br /><em>»+ TextBox1.Text + «</em><br /> был записан.»;

  • Установить свойство Visible элемента TextBox1 в false.

TextBox1.Visible = false;

  • Установить свойство Visible элемента Label8 в false.

Label8.Visible = false;

  • Установить свойство Visible элемента Button1 в false.

Button1.Visible = false;

Этот код манипулирует свойствами элементов управления так, что они становятся скрытыми, когда пользователь подтверждает опрос.

3. Определить, была ли веб-страница ASP.NET вызван как часть процесса обратной передачи.

а) Вернуться в режиме конструктора страницы FeedbackForm.aspx, а затем дважды кликнуть фон страницы –  за пределами таблицы.

Visual Studio создаст метод для обработки события Load  этой страницы.

б) Добавить в обработчик событий код, который анализирует свойство Page.IsPostBack веб-страницы. Если свойство Page.IsPostBack Установлено в not true код должен выполнять следующие действия:

  • Если элемент Department коллекции Page.Request.QueryString еще не установлен – устанавливает свойство Text элемента управления lblTo в значение: Adventure

Works: Общие отзывы.

  • Если элемент Department коллекции Page.Request.QueryString равен строке «WEB» – устанавливает свойство Text элемента управления lblTo в значение: Adventure

Works: Отзывы о веб-сайте.

  • Если элемент Department коллекции Page.Request.QueryString равен строке «PRODUCTS» – устанавливает свойство Text элемента управления lblTo в значение: Adventure Works: Отзывы о продукции.
  • Во всех других случаях –устанавливает свойство Text элемента управления lblTo в значение: Adventure Works: Общие отзывы:

if (!Page.IsPostBack)

{

if (this.Page.Request.QueryString[«Department»] == null)

{

lblTo.Text = «Adventure Works: Общие отзывы»;

return;

}

switch (this.Page.Request.QueryString[«Department»].ToUpper())

{

case «WEB»:

lblTo.Text = «Adventure Works: Отзывы о веб-сайте»;

break;

case «PRODUCTS»:

lblTo.Text = «Adventure Works: Отзывы о продукции»;

break;

default:

lblTo.Text = «Adventure Works: Общие отзывы»;

break;

}

}

4. Создать страницу, которая может принимать и обрабатывать введенную информацию, в рамках межстраничного постбэка.

а) Открыть страницу SurveyReceipt.aspx в режиме конструктора.

б) Создать обработчик событий по умолчанию Page_Load для этой веб-странице.

в) В методе Page_Load, написать код, который вызывает  метод PreviousPage.FindControl, передавая ему  в качестве параметра символьную строку  txtName.

г) Добавите код, который преобразует возвращаемое значение этого метода в объект  HtmllnputText.

д) Добавить код, который объявляет переменную с именем txtName как объект  HtmllnputText и устанавливает его значение в код, который был добавлен.

Следующий пример кода показывает решение этих задач:

HtmlInputText txtName = (HtmlInputText)PreviousPage.FindControl(«txtName»);

е) Добавить код, который объявляет  и устанавливает значения аналогичным образом еще 10-и переменным из Приложения 2 .

ж) Объявить строковую переменную с именем sName, а затем установить ее значение в  txtName.Value.ToString():

string sName = txtName.Value.ToString();

з) Объявить строковую переменную с именем sGender, а затем установить ее значение в       Request.Form [«optGender»]:

string sGender = Request.Form[«optGender»];

и) Объявить булевую переменная с именем bMBR, а затем установить ее значение в chkMBR.Checked:

bool bMBR = chkMBR.Checked;

к) Объявить булевую переменная с именем BRR, а затем установить ее значение в  chkRR.Checked:

bool bRR = chkRR.Checked;

л) Объявить строковую переменную имени sTrails, а затем установить ее значение в txtTrails.Value:

string sTrails = txtTrails.Value;

м) Объявить строковую переменную с именем sLast, а затем установить ее значение в  calLast.SelectedDate.ToLongDateString():

string sLast = calLast.SelectedDate.ToLongDateString();

н) Объявить строковую переменную с именем sNext, а затем установить ее значение в  calNext.SelectedDate.ToLongDateString():

string sNext = calNext.SelectedDate.ToLongDateString();

о) Объявить строковую переменную с именем sAbility, а затем установить ее значение в  ddAbility.SelectedVarue.ToString():

string sAbility = ddAbility.SelectedValue.ToString();

п) Объявить строковую переменную с именем sExperience, а затем установить ее значение в  lstExperience.SelectedValue.ToString ():

string sExperience = lstExperience.SelectedValue.ToString();

р) Объявить строковую переменную с именем sGoals, а затем установить ее значение в «»:

string sGoals = «»;

с) Построить цикл, который перебирает объекты Listltem в  chkGoals.Items. В цикле, создать структуру проверяющую, является ли  свойство Selected объекта Listltem установленным в значение true. Если да – добавить код, который  должен проделать конкатенацию свойства Text объекта Listltem со строкой <br />, и результирующую строку присвоить переменной sGoals:

foreach (ListItem goal in chkGoals.Items)

{

if (goal.Selected)

{

sGoals += goal.Text + «<br />»;

}

}

т) Объявить строковую переменную с именем sMarketing, а затем установите ее значение optMarketing.SelectedValue.ToString():

string sMarketing = optMarketing.SelectedValue.ToString();

у) Объявить строковую переменную с именем sRegion, а затем установите ее значение hdnRegion.Value:

string sRegion = hdnRegion.Value;

ф) Установить свойство Text объекта lblSurveyReceipt в значение   конкатенации текста и переменных, добавив код из приложения 3.

5. Тестирование веб-приложения

а) Сохраните все файлы.

б) Для запуска веб-приложения в обозревателе решений кликните правой кнопкой мыши веб-проект, а затем из контекстного меню выберите Просмотреть  в обозревателе.

Microsoft Internet Explorer запускается и отображает страницы по умолчанию.

в) Обратите внимание на графическо изображение в правой части страницы. Нажмите клавишу F5  несколько раз для обновления браузера, пока изображение не изменится. Эта  функция динамического изменения изображения обеспечивается совместно  серверным элементом управления AdRotator, который был установлен на странице, и файлом  AdSchedule.xml, который содержит подробную информацию о рекламациях.

г) В верхней левой части страницы, кликните на Главная, кликните на Наши контакты, и затем кликните Провести опрос.

Меню такой структуры обеспечивается с совместно  серверным элементом управления пользовательского  интерфейса Menu и файлом Web.sitemap, который содержит определение меню.

д) Когда загрузится страница Survey.aspx, обратите внимание на навигационные функции  ниже логотипа Adventure Works. Эта структура навигации обеспечивается совместно  серверным элементом управления SiteMapPath и файлом Web.sitemap, который содержит определение меню.

Кликните ссылку Главная в элементе управления навигацией SiteMapPath.

е) Перейдите к странице Survey.aspx еще раз. Обратите внимание на макет и элементы управления, которые она содержит.

ж) В онлайн-опросе введите  информацию о себе.

з) Кликните кнопку Submit. Информацию об опросе разместится на странице SurveyReceipt.aspx, где она предоставляется для обеспечения обратной связи.

и) Просмотреть детали проведенного исследования.

к) В списке ссылок на левой части страницы нажмите Обратная связь.

л) Кликните Просьба дать отзыв о нашем сайте. Когда страница FeedbackForm.aspx загрузится, обратите внимание, что появилась надпись Adventure Works: Отзывы о веб-сайте. Это происходит потому, что страница загружается в ответ на обычный запрос, а не как часть постбэка страницы.

м) В текстовом поле Ваши комментарии наберите набрать: Прекрасный сайт! И кликнуть Подтвердить.

н) На стороне клиента появится сообщение с просьбой подтвердить, что он хочет сохранить результаты опроса. Нажмите OK.

Этот код, который выполняется на стороне клиента для события OnClientClick как реакция нажатия кнопки Подтвердить был написан в 3 задании. Обратить внимание на информацию, отображаемую на веб-странице и отметить также, что ранее видимые элементы label, text box, и  button больше не видны. Это происходит потому, что страница была загружена как в виде постбэка, и был введен  код, чтобы скрыть эти элементы согласно проекта.

о) Закрыть Internet Explorer.

 

Приложение 1

<asp:Table ID=»tblInner» runat=»server» GridLines=»None» Width=»100%»>

<asp:TableRow ID=»innerR1″ runat=»server»>

<asp:TableCell ID=»innerR1C1″ runat=»server» Wrap=»false» Width=»1%»>

 

</asp:TableCell>

<asp:TableCell ID=»innerR1C2″ runat=»server»>

 

</asp:TableCell>

</asp:TableRow>

<asp:TableRow ID=»innerR2″ runat=»server»>

<asp:TableCell ID=»innerR2C1″ runat=»server» Wrap=»false» Width=»1%»>

 

</asp:TableCell>

<asp:TableCell ID=»innerR2C2″ runat=»server»>

 

</asp:TableCell>

</asp:TableRow>

</asp:Table>

Приложение 2

HtmlInputCheckBox chkMBR = (HtmlInputCheckBox)PreviousPage.FindControl(«chkMBR»);

HtmlInputCheckBox chkRR = (HtmlInputCheckBox)PreviousPage.FindControl(«chkRR»);

HtmlTextArea txtTrails = (HtmlTextArea)PreviousPage.FindControl(«txtTrails»);

Calendar calLast = (Calendar)PreviousPage.FindControl(«calLast»);

Calendar calNext = (Calendar)PreviousPage.FindControl(«calNext»);

DropDownList ddAbility = (DropDownList)PreviousPage.FindControl(«ddAbility»);

ListBox lstExperience = (ListBox)PreviousPage.FindControl(«lstExperience»);

CheckBoxList chkGoals = (CheckBoxList)PreviousPage.FindControl(«chkGoals»);

RadioButtonList optMarketing = (RadioButtonList)PreviousPage.FindControl(«optMarketing»);

HiddenField hdnRegion = (HiddenField)PreviousPage.FindControl(«hdnRegion»);

Приложение 3

lblSurveyReceipt.Text = «Данные Вашего опроса:<br />»

+ «Имя: » + sName + «<br />»

+ «Пол: » + sGender + «<br />»

+ «Горный велосипед: » + bMBR + «<br />»

+ «Дорожный велосипед: » + bRR + «<br />»

+ «Любимые трассы: » + sTrails + «<br />»

+ «Последняя поездка: » + sLast + «<br />»

+ «Следующая поездка: » + sNext + «<br />»

+ «Ваши возможности: » + sAbility + «<br />»

+ «Ваш опыт: » + sExperience + «<br />»

+ «Ваши цели: » + sGoals + «<br />»

+ «Маркетинговая информация: » + sMarketing + «<br />»

+ «Ваш регион: » + sRegion + «<br />»;

}