Asp.net 简明教程

ASP.NET - Personalization

网站设计为让用户多次访问。个性化允许网站记住用户身份及其它信息详细信息,它向每个用户提供个性化的环境。

ASP.NET 提供个性化网站的服务,以适应特定客户端的口味和偏好。

Understanding Profiles

ASP.NET 个性化服务基于用户配置文件。用户配置文件定义网站所需的关于用户的信息类型。例如,姓名、年龄、地址、出生日期和电话号码。

此信息在应用程序的 web.config 文件中定义,并且 ASP.NET 运行时会读取并使用它。这项工作由个性化提供程序完成。

从用户数据中获取的用户配置文件存储在由 ASP.NET 创建的默认数据库中。您可以创建自己的数据库来存储配置文件。配置文件数据定义存储在配置文件 web.config 中。

Example

我们创建一个示例网站,其中我们希望我们的应用程序记住用户详细信息,如姓名、地址、出生日期等。在 <system.web> 元素中的 web.config 文件中添加配置文件详细信息。

<configuration>
<system.web>

<profile>
   <properties>
      <add name="Name" type ="String"/>
      <add name="Birthday" type ="System.DateTime"/>

      <group name="Address">
         <add name="Street"/>
         <add name="City"/>
         <add name="State"/>
         <add name="Zipcode"/>
      </group>

   </properties>
</profile>

</system.web>
</configuration>

当配置文件在 web.config 文件中定义时,可以通过在当前 HttpContext 中找到的 Profile 属性以及通过 page 使用配置文件。

添加文本框以获取如配置文件中所定义的用户输入,并添加一个按钮以提交数据:

personalization

更新 Page_load 以显示配置文件信息:

using System;
using System.Data;
using System.Configuration;

using System.Web;
using System.Web.Security;

using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class _Default : System.Web.UI.Page
{
   protected void Page_Load(object sender, EventArgs e)
   {
      if (!this.IsPostBack)
      {
         ProfileCommon pc=this.Profile.GetProfile(Profile.UserName);

         if (pc != null)
         {
            this.txtname.Text = pc.Name;
            this.txtaddr.Text = pc.Address.Street;
            this.txtcity.Text = pc.Address.City;
            this.txtstate.Text = pc.Address.State;
            this.txtzip.Text = pc.Address.Zipcode;
            this.Calendar1.SelectedDate = pc.Birthday;
         }
      }
   }
}

为提交按钮编写以下处理程序,以便将用户数据保存到配置文件中:

protected void btnsubmit_Click(object sender, EventArgs e)
{
   ProfileCommon pc=this.Profile.GetProfile(Profile.UserName);

   if (pc != null)
   {
      pc.Name = this.txtname.Text;
      pc.Address.Street = this.txtaddr.Text;
      pc.Address.City = this.txtcity.Text;
      pc.Address.State = this.txtstate.Text;
      pc.Address.Zipcode = this.txtzip.Text;
      pc.Birthday = this.Calendar1.SelectedDate;

      pc.Save();
   }
}

当页面第一次执行时,用户需要输入信息。但是,下一次用户详细信息会自动加载。

Attributes for the <add> Element

除了我们已使用的 name 和 type 属性外,<add> 元素还有其他属性。下表说明了其中一些属性:

Attributes

Description

name

属性的名称。

type

默认类型为字符串,但它允许任何完全限定的类名作为数据类型。

serializeAs

序列化此值时要使用的格式。

readOnly

只读个人资料值无法更改,默认情况下此属性为 false。

defaultValue

个人资料不存在或没有信息时使用的默认值。

allowAnonymous

一个布尔值,指示此属性是否可与匿名个人资料一起使用。

Provider

个人资料提供程序应该用来管理此属性。

Anonymous Personalization

匿名个性化允许用户在识别自己之前个性化网站。例如,Amazon.com 允许用户在登录之前将商品添加到购物车中。若要启用此功能,web.config 文件可以配置为:

<anonymousIdentification enabled ="true" cookieName=".ASPXANONYMOUSUSER"
   cookieTimeout="120000" cookiePath="/" cookieRequiresSSL="false"
   cookieSlidingExpiration="true" cookieprotection="Encryption"
   coolieless="UseDeviceProfile"/>