Файл: Справочник для опытных и как пособие для начинающих программистов. Компактдиск содержит исходные коды примеров из книги.doc

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 11.01.2024

Просмотров: 937

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.


// одну из пар "имя-фамилия", затем кодируем их, чтобы они не были видны

// в адресной строке. Щелчок пользователя по гиперссылке вызывает переход

//на страницу Target.aspx, причем в гиперссылке указаны оба закодированных

// параметра

using System;

// Другие директивы using удалены, поскольку они не используются в данной программе

namespace Ssylka

{

public partial class Source : Systern.Web.UI.Page

{

protected void Page_Load(object sender, EventArgs e)

{

// var Генератор = new Random(DateTime.Now.Millisecond);

// или просто

var Генератор = new Random();

int ЧИСЛО = Генератор.Next(0, 3);

string t1 = null, t2 = null;

switch (ЧИСЛО)

{ // Случайное попадание на одну из меток case:

case 0:

t1 = "Витя"; t2 = "Зиборов"; break;

case 1:

t1 = "Света"; t2 = "Ломачинская"; break;

case 2:

t1 = "Андрей"; t2 = "Зиборов-младший"; break;

}

// Закодируем tl и t2 для того, чтобы они не были видны

// в адресной строке:

t1 = System.Web.HttpUtility.UrlEncode(tl);

t2 = System.Web.HttpUtility.UrlEncode(t2);

HyperLink1.Text = "Щелкните эту ссылку для " + "передачи данных на страницу Target.aspx"; HyperLink1.NavigateUrl = "Target.aspx?n1=" + tl + "&n2=" + t2;

}

}

}

Как видно из текста программы, при обработке события загрузки страницы Page_Load создаем объект генератор класса Random, в скобках задаем начало псевдослучайной последовательности, равное, например, как приведено в комментарии, текущей миллисекунде текущей даты. Используя объект генератор, получаем слу­чное число в интервале от 0 до 2. Это число, попадая в оператор множественного вы6opa switch, вызывает присваивание пары "имя—фамилия". Далее функция UrlEncode кодирует t1 и t2 для того, чтобы они не были видны в адресной строке браузера. В конце назначены свойства гиперссылки с указанием параметров n1 и n2 для передачи их в вызываемую Web-страницу Target.aspx. В результате работы Web-формы Source.aspx в браузере мы получим следующее (рис. 13.14).



Рис. 13.14. Фрагмент работы Web-страницы с гиперссылкой

Далее, щелкнув на этой ссылке, мы попадаем на вызываемую Web-страницу Target.aspx. Однако в нашем проекте еще нет Web-страницы Target.aspx. Для добавления новой Web-формы в пункте меню Project выберем команду Add New Item и появившемся окне дважды шелкнем на значке шаблона Web Form. В окне Solution Explorer переименуем (щелкнув правой кнопкой мыши) новую Web- форму из WebForm2.aspx в Target.aspx. Добавлять в эту форму из панели
Toolbox ничего из элементов управления не станем, поскольку выводить в форму некоторый текст будем, используя метод Write объекта Response. В листинге 13.11 при­ведено содержимое файла программной поддержки Target.aspx.cs.

Листинг 13.11. Получение переданных параметров

// Передача данных между Web-страницами через параметры гиперссылки. На этой

// новой странице Target.aspx.cs с помощью объекта Request получаем оба

//переданных параметра и выводим их в Web-документе

using System;

// Другие директивы using удалены, поскольку они не используются в данной программе

namespace Ssylka

{

public partial class Target : System.Web.UI.Page

{

protected void Page_Load(object sender, EventArgs e)

{ // Получаем параметры, переданные с Web-страницы, с которой была

// вызвана данная страница

string ИМЯ1, ИМЯ2; // Request - это запрос

ИМЯ1 = Request.QueryString.Get("Nl");

ИМЯ2 = Request.QueryString.Get("N2");

string URL = Request.UrlReferrer.AbsoluteUri;

Response.Write(@"
Вы попали на данную Web-" + "страницу со страницы: " + URL + "
");

Response.Write(@"
Страница " + URL + " передала на " + "данную страницу имя: " +

ИМЯ1 + " и фамилию " + ИМЯ2);

}

}

}

В этом программном коде извлекаем переданные параметры n1 и n2 (в данном cлучае прописные и строчные буквы равнозначны) методом QueryString.Get объ­екта Request. С помощью объекта Request получаем также абсолютный URL-адрес вызывающей страницы. Для вывода какого-либо текста на Web-страницу мы могли бы воспользоваться элементом управления Label, однако мы вывели текст "Вы по­пали..." методом Write объекта Response, чтобы продемонстрировать удобство ме­тода Write, например, для отладки программного кода. Тег <br /> использован нами для того, чтобы начать предложение с новой строки. Перед стартом программы в окне Solution Explorer правой кнопкой мыши щелкнем по изображению файла Source.aspx и в контекстном меню выберем команду Set As Start Page, чтобы программа начала работу с этой страницы. Результат работы Web-страницы приведен на рис. 13.15.



При использовании строки запроса, т. е. параметров гиперссылки, следует помнить, что некоторые браузеры ограничивают длину URL. Поэтому необходимо следить, чтобы текст в адресной строке не превышал 255 символов.

Убедиться в работоспособности Web-страницы можно, открыв решение Ssylka.sln в папке Ssylka.

Пример 98. Передача данных HTML-формы на

ASPX-страницу методами класса Request

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

Поставим следующую конкретную задачу. Имеем Web-форму, написанную на "чистом" HTML, т. е. в данной разметке нет тегов ASP, JavaScript-кода или РНР-скрипта, есть только теги HTML. Web-форма содержит два текстовых поля и кнопку для отправки данных. Одно поле приглашает пользователя ввести свое имя, а второе — адрес электронной почты. Щелчок на кнопке отправляет данные, заполненные пользователем в форме, на другую Web-страницу для обработки и отобра­жения принятых данных на этой новой странице.

Для решения этой задачи запустим Visual Studio 2010, закажем новый проект из шаблона Empty ASP.NET Web Application. Добавим Web-форму, содержащую только теги HTML, для этого в пункте меню Project выберем команду Add New Item и в появившемся окне укажем шаблон HTML page. В окне Solution Explorer переименуем новый появившийся файл в ishod.htm, на вкладке View Code этого файла введем HTML-разметку, представленную на рис. 13.16.



Рис. 13.16. HTML-разметка Web-страницы, содержащей форму

Обратите внимание на тег <form>: здесь атрибут action (действие) формы ссылается на страницу, которая будет обрабатывать данные, принятые с формы. Атрибут формы method определяет способ передачи данных. Существуют два ме­тода: get и post. Метод get передает все данные формы в конце URL через пара­метры гиперссылки. Из-за различных ограничений, связанных со спецификой язы­ков и длиной данных, этот метод применяется редко. Метод post передает все данные формы в теле запроса. Этот метод используется чаще, чем get.

Элемент <input> является базовым для всех элементов формы. Он использует­ся для внедрения в форму кнопок, графических изображений, флажков, переключа­телей, паролей и текстовых полей. Атрибут type определяет тип элемента, для тек­стовых полей type="text", для кнопок type=" submit", для флажков
type="checkbox" и т. д. Атрибутом name мы будем пользоваться для идентифика­ции элементов управления при обработке данных формы. Атрибутом value мы воспользовались, чтобы в первом поле по умолчанию каждый раз при запуске формы оказывалась фамилия автора.

Заметьте, что Visual Studio 2010 содержит удобный HTML-редактор, который зеленым подчеркиванием указывает на синтаксические ошибки, допущенные при вводе HTML-разметки. Для примера на рис. 13.16 значение атрибута type не за­ключено в двойные кавычки, редактор HTML-разметки подчеркнул этот фрагмент зеленой волнистой линией, и при "зависании" указателя мыши над ним мы получили сообщение об этой ошибке: "Validation (XHTML 1.0 Transitional): Attribute 'alues must be enclosed in quotation marks".

Нажмем клавишу <F5> для запуска данного проекта, в результате получим форму, подлежащую заполнению (рис. 13.17).



Рис. 13.17. Форма для заполнения и дальнейшей обработки

Теперь создадим Web-страницу, которая будет обрабатывать данные, принятые формы. Для этого в пункте меню Project выберем команду Add New Item, в новом появившемся окне укажем шаблон Web Form и добавим его к нашему проекту. В окне Solution Explorer переименуем новый файл в res.aspx. На этой новой границе текущего проекта мы не будем использовать никакие элементы управления. Отображать принятые новой страницей данные будем с помощью объекта Response. На вкладке файла программной поддержки res.aspx.cs введем программный код, приведенный в листинге 13.12.

Листинг 13.12. Формирование Web-страницы, получающей данные

// Данная Web-страница получает имя пользователя и адрес его электронной почты от Web-формы

// ishod.htm и отображает эти данные на странице

using System;

// Другие директивы using удалены, поскольку они не используются в данной программе

namespace Передача

{

public partial class res : System.Web.UI.Page

{

protected void Page_Load(object sender, EventArgs e)

{

// Page.Title = "Прием данных от страницы ishod.htm";

string Метод = Request.HttpMethod;

string Имя = Request.Form.Get("name");

string Почта = Request.Form.Get("email");

Response.Write("Передача данных произвeдена методом " + Метод + @"
"); Response.Write("Получено имя: " + Имя + @"
");

Response.Write("Получен адрес электронной почты: " + Почта);


}

}

}

Как видно из программного кода, при обработке события загрузки страницы гние переданных данных организуем с помощью методов класса Request. Фрагмент работы Web-страницы представлен на рис. 13.18.



Рис. 13.18. Отображение данных формы на новой странице

Убедиться в работоспособности данного проекта можно, открыв решение Пе­редача.sln в папке Передача.

Пример 99. Передача значений элементов управления на другую Web-страницу с помощью объекта PreviousPage

Покажем, как можно решить задачу из предыдущего примера методами объектa PreviousPage. Итак, на начальной Web-странице имеем командную кнопку ПЕРЕХОД и текстовое поле, которое заполняет пользователь. После щелчка на кнопке происходит переход на другую Web-страницу. На новой странице отображается содержимое текстового поля и надпись на кнопке из предыдущей страницы. Для решения этой задачи запустим Visual Studio 2010, закажем новый проект из шаблона Empty ASP.NET Web Application. Далее добавим в текущий проект начальную Web-форму, для этого в пункте меню Project выполним команду Add New Item и в появившемся окне выберем шаблон Web Form. В окне Solution Explorer переименуем (команда Rename в контекстном меню) новую появившуюся форму из WebForm1.aspx в ishod.aspx. На вкладке конструктора формы из раздела Standard панели элементов Toolbox перенесем командную кнопку Button и тек-стовое поле TextBox. На вкладке программного кода (клавиша <F7>) напишем текст, приведенный в листинге 13.13.

Листинг 13.13. Заполнение данных на первой Web-странице

// На начальной Web-странице имеем командную кнопку "ПЕРЕХОД" и текстовое поле которое заполняет пользователь. //После щелчка на кнопке происходит переход на другую Web-страницу. На новой странице отображается содержимое

// текстового поля и надпись на кнопке из предыдущей страницы

using System;

// Другие директивы using удалены, поскольку они не используются в данной программе

namespace Передача2

{

public partial class ishod : System.Web.UI.Page

{

protected void Page_Load(object sender, EventArgs e)

{

Button1.Text = "ПЕРЕХОД"; Button1.PostBackUrl = "res.aspx";

}

protected void Button1_Click(object sender, EventArgs e)

{

// Response.Redirect ("res .aspx") ;

}

}

}

Как видно из программного кода, при обработке события загрузки формы при­сваиваем надписи на кнопке строку "