|
Программирование >> Программирование с использованием ajax
В следующем упражнении мы создадим информацию о профиле пользователя и воспользуемся ею. 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 />
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |