Файл: Справочник для опытных и как пособие для начинающих программистов. Компактдиск содержит исходные коды примеров из книги.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") ;
}
}
}
Как видно из программного кода, при обработке события загрузки формы присваиваем надписи на кнопке строку "