Компьютерные книги
Главное меню
Главная Поиск по сайту Добавить материал О нас Карта книг Карта сайта
Реклама
computersbooks.net -> Добавить материал -> Языки программирования -> Ватсон К. -> "С#" -> 370

С# - Ватсон К.

Ватсон К. С# — Лори, 2005 . — 879 c.
ISBN 1-861004-98-2
Скачать (прямая ссылка): vatsonc2005.pdf
Предыдущая << 1 .. 364 365 366 367 368 369 < 370 > 371 372 373 374 375 376 .. 404 >> Следующая


voteBarControle[i-1].Maximum " highestVote; voteBarControls [ i-Ц .Valde - poll Votes t i] ;

__ _1

В завершение выводится суммарное количество голосов путем присвоения свойства Text управляющему элементу totalVotesLabei:

totalVotesLabei. Text = total Votes. ToStringO ;

3

Если теперь построить проект и запустить приложение, то перед нами сначала предстанет незаполненная форма, однако очень скоро будет запущен объект Timer, и все поля будут наполнены соответствующими значениями, полученными с web-cepeepa (см. рис, слева).

Еслн же запустить консольное приложение или проголосовать, воспользовавшись для этого web-приложеннем, то можно увидеть, что не позднее, чем через пять секунд инструмент для вывода результатов опроса правильно отобразит изменившиеся значения.

Один человек - один голос

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

Первое, что требуется сделать,— это внести небольшие изменения в файл default.азрх в проекте web-приложения (poiiw), которые позволят просматривать куки и наблюдать за тем, что делает наша программа. Изменение, отмеченное в программе (Trace=-true"), означает, что когда открывается файл default.аврх в браузере, то видны несколько страниц с отладочной информацией, в том числе подробная информация о куки, полученных страницей. Сейчас те нз вас, кто ранее работал с ASP 3.0, возможно, будут очень сильно удивлены:

<%9 Рада language^¦сI¦ Trac*»“true* ... Inherita=‘PollW.WebForml" t>

|t";Po4 Results Tool - ,IP(K|
What de YcluprnojitlangiJoyii 'oyoupi .лцве?
Tow votes 108
. C# 16 [W] •ill
c."* 2 (1 -4) i .
Java 34 [3\X] jiiiiiii
JavaScript i2 (mj” HI
V»uJ. 3a»c 44 (40%) miniiii 4-'j- „ ' -
788_________________________________________________________Практический пример

Если теперь открыть в браузере defauit.aspx, то можно обнаружить всего один купи, который используется ASP.NET для хранения информации о сеансе (см. рис. слева).

Теперь есть возможность создать некий код, позволяющий сохранить куки, н посмотреть, что будет происходить прн его выполнении. Обратимся к классу рои. Мы будем сохранять куки на компьютере посетителя, после того как он проголосует,— в конце метода voteO. В конце этого метода мы записывали данные опроса обратно в XML-файл и закрывали поток:

nyDataSet.WriteXml (myStream,XmlWriteMode.IgnoreScheina) j nyStream. Close () ;

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

Чтобы иметь возможность обратиться к классу HttpContext, необходимо включить в программу ссылку на пространство имен system.web:

ueine System.Web;

Теперь нужно вставить код после запнсн в XML-поток:

if (HttpContext.Current i* null)

(

Для создания куки потребуется создать экземпляр объекта с помощью класса Httpcookie. У каждого куки имеются свое собственные имя н значение. Имя всегда будет одним и тем же (wroxPoii), а вот значение будет уникальным для каждого конкретного запроса, поскольку необходимо гарантировать, что при проведении нового опроса любой пользователь сможет успешно зарегистрировать свой голос:

HttpCookie myCookie = пен Httpcookie1'WroxPoll*);

В качестве значения, уникального для данного опроса, используется задаваемый в нем вопрос:

myCoakie.Value * (myQuesqCion) i

Для получения текущего HTTP-ответа используется объект HttpResponse, и следует обратиться к его свойству Response, которое представляет собой данные, отправляемые обратно браузеру пользователя. Метод Add о свойства cookies используется для задания того, что новый куки должен быть добавлен в НТТР-поток, с тем чтобы браузер пользователя записал его на диск:

Ht tpContext.Current.Response.Cookies.Add{myCookie);

)

| 3 Hftrovrft Mimef
У* г"» Ff-wie ДрЗа cm МИ 1 II ‘hg
Предыдущая << 1 .. 364 365 366 367 368 369 < 370 > 371 372 373 374 375 376 .. 404 >> Следующая
Книги
Web-программирован-
ие
Аппаратное обеспечение Графика Руководство по П.О. Самоучитель Теория программирования Фотошоп Языки программирования
Новые книги
Вирт Н. "Систематическое программирование " (Теория программирования)

Эком "Microsoft Excel 2000 шаг за шагом Русская версия самоучитель " (Самоучитель)

Поляков А.Ю. "Методы и алгоритмы компьютерной графики в примерах Vizual C++" (Графика)

Баяковский Ю.М. "Графическая библиотека Open GL " (Графика)

Валиков А. "Технология " (Языки программирования)
Авторские права © 2013 ComputersBooks. Все права защищены.