Программирование >>  Программирование с использованием ajax 

1 ... 213 214 215 [ 216 ] 217 218 219 ... 396


В следующем упражнении мы создадим информацию о профиле пользователя и воспользуемся ею.

1. Откройте ранее созданное Web-приложение EventRegistrationWeb.

2. Откройте файл web.config, который был создан в предыдущей главе. Если вы не видите этот файл в окне Solution Explorer, создайте такой файл, выбрав пункт меню Add New ltem=>Web Configuration File (Добавить новый элементКонфигурационный файл).

3. Добавьте раздел <prof ile>, содержащий свойства Country, Visits и LastVisit, в файл web.config, как показано ниже. Свойство Country имеет тип String (по умолчанию), свойство Visits имеет тип Int32, а свойство LastVisit имеет тип DateTime:

<configuration xmlns= http: schemas.microsoft.com/.NetConfiguration/v2.0 > <system.web> < ! - ... -> <profile>

<properties>

<add name= Country />

<add name= Visits type= System.Int32 defaultValue= 0 /> <add name= LastVisit type= System.DateTime /> </properties> </profile> <!- ... --> </system.web> </configuration>

4. Создайте новую Web-страницу Prof ileDemo.aspx и добавьте три метки для отображения текущих значений, а также раскрывающийся список для выбора названия страны. Присвойте меткам имена Label Last Visit, LabelVisitCount и LabelSelectedCountry. Присвойте раскрывающемуся списку имя DropDownListCountries, добавьте в него названия нескольких стран и присвойте свойству AutoPostBack значение true.

5. Добавьте обработчик события OnCountrySelection для события SelectedlndexChange раскрывающегося списка, как показано ниже:

protected void OnCountrySelection(object sender, EventArgs e) (

Profile.Country = this.DropDownListCountries.Selectedltem.Value; Profile.Save 0;

6. Добавьте следующий код в обработчик события PageLoad (), чтобы отображать текущие значения из профиля. Profile - это динамически создаваемое свойство класса Page, свойства которого определены в конфигурационном файле. Все эти свойства являются строго типизированными - имена и типы свойств совпадают с именами и типами, определенными в конфигурационном файле.

void Page Load(object sender, EventArgs e) {

if (!Page.IsPostBack) {

DropDownListCountries.SelectedValue = Profile.Country;



LabelLastVisit.Text = Profile.LastVisit.ToLongTimeString();

LabelVisitCount.Text = Profile.Visits.ToString();

LabelSelectedCountry.Text = Profile.Country;

Proflie.VisitS++;

Profile.LastVisit = DateTime.Now;

Profile.Save 0;

7. Теперь вы можете запустить и просмотреть Web-страницу. Выберите название страны из списка. Закройте Web-браузер и запустите его снова. Вы убедитесь в том, что информация из профиля будет сохраняться в промежутках между сеансами.

Описание полученных результатов

Свойство Profile, которое вы можете использовать внутри кода Web-страницы, создается динамически. Данное свойство не упоминается при описании класса Page в документации MSDN, потому что оно не существует как часть класса Page. Вместо этого, благодаря конфигурации свойства в конфигурационном файле web.config, свойство Profile создается автоматически. Тип свойства Profile - это динамически создаваемый класс, являющийся потомком класса Prof ileBase, и содержит свойства, определенные в конфигурационном файле.

Группы профилей

Профили могут отслеживать большой объем информации, которую можно организовывать в виде групп. Группа свойств определяется посредством элемента <group>, как показано ниже:

<configuration xmlns= http: schemas.microsoft.com/.NetConfiguration/v2.0 > <system.web> <profile>

<properties>

<add name= Country />

<add name= Visits type= System.Int32 defaultValue= 0 /> <add name= LastVisit type= System.DateTime /> <group name= EventSelection >

<add name= Country />

<add name= City />

<add name= StartDate type= System.DateTime /> <add name= EndDate type= System.DateTime /> </group>

</properties> </profile> <!- ... --> </system.web> </configuration>

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

string country = Profile.EventSelection.Country; string city = Profile.EventSelection.City; DateTime startDate = Profile.EventSelection.StartDate; DateTime endDate = Profile.EventSelection.EndDate;



Профили И компоненты

Внутри кода компонентов доступ к информации профиля невозможно получить с помощью свойства Profile. Вместо этого, доступ к профилю производится посредством свойства HttpContext. Кроме того, в этом случае невозможно строго определить типы. В следующем примере показан вариант доступа к строке профиля Country, определенной ранее. Current - это статическое свойство класса HttpContext, которое возвращает объект HttpContext, связанный с сеансом клиента. Свойство Profile возвращает объект типа Prof ileBase, в котором к каждому значению профиля можно получить доступ посредством индексатора. Индексатор определяется для возвращаемых объектов типа Object, поэтому перед присваиванием значения переменной необходимо выполнить приведение к типу:

string country = (string)HttpContext.Current.Profile[ Country ] ;

Профили и специальные типы данных

Благодаря профилям, вы можете хранить не только базовые типы данных, такие как int, short, string и DateTime, но и специальные типы данных. Тип данных необходим для поддержки единого механизма сериализации. В следующем списке поясняются механизмы сериализации, поддерживаемые профилями.

□ ХМЬч:ериализация. Этот механизм используется по умолчанию. Он позволяет сохранять все общедоступные свойства и поля. Для этого механизма необходимо применять конструктор по умолчанию. XML-сериализация рассматривается в главе 23.

□ Двоичная сериализация. Для этого вида сериализации класс нужно пометить атрибутом [Serializable]. Сериализуются все приватные поля. Сериализация во время выполнения рассматривается в главе 22.

а Строковая сериализация. При этом виде для сериализации данных можно использовать преобразователь типов. Если для выполнения сериализации нет преобразователя типов, вызывается метод ToString (), который преобразовывает объект в Строку.

Используемый в нашем случае механизм сериализации определен посредством атрибута serializeAs. Если этот атрибут не задан, используется XML-сериализация. Возможными вариантами для этого атрибута являются Binary, Xml и String.

<profile>

<properties>

<add naxne= Demo type= MyClass serial!zeAe= Binary />

</properties> </profile>

Профили и анонимные пользователи

По умолчанию профили можно применять только для аутентифицированных пользователей. Чтобы использовать профили и для анонимных пользователей, их необходимо указать в конфигурационном файле. В этом случае каждое свойство профиля, которое предполагается быть доступным для анонимных пользователей, должно быть установлено индивидуально:

<configuration> <system.web>

<anonyпюusIdentification enabled= true />



1 ... 213 214 215 [ 216 ] 217 218 219 ... 396

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика