网站设计是为用户提供重复访问的个性化使得网站能够记住用户身份和其他信息细节,并为每个用户呈现个人化的环境。
asp.net提供个性化网站来为特定客户的喜好和偏好地提供服务。
asp.net个性化服务基于用户配置文件。 用户配置文件定义了该网站所需用户的信息种类。 例如,姓名,年龄,地址,出生日期和电话号码。
此信息在应用程序的web.config
文件中定义,asp.net运行时读取并使用它。这项工作是由个性化提供程序来完成的。
从用户数据中获取的用户配置文件存储在由asp.net创建的默认数据库中。 您可以创建自己的数据库来存储配置文件。配置文件数据定义存储在配置文件web.config
中。
下面创建一个asp.net空网站示例项目:personalization ,我们希望应用程序记住用户详细信息,如姓名,地址,出生日期等。在web.config
文件中的<system.web>
元素节点下添加配置文件详细信息。
<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"/>
</group>
</properties>
</profile>
</system.web>
</configuration>
在web.config
文件中定义配置文件时,配置文件可以通过当前httpcontext
中的profile
属性使用,也可以通过页面使用。
按照配置文件中的定义添加文本框以接受用户输入,并添加一个用于提交数据的按钮:
更新page_load
事件方法以显示配置文件信息:
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.calendar1.selecteddate = pc.birthday;
}
}
}
为提交按钮编写以下处理程序,将用户数据保存到配置文件中:
protected void button1_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.birthday = this.calendar1.selecteddate;
pc.save();
}
}
`
当页面首次执行时,用户需要输入信息。 但是,下次用户的详细信息会自动加载。
除了已经使用的名称和类型属性之外,还有<add>
元素的其他属性。下表说明了其中的一些属性:
编号 | 属性 | 描述 |
---|---|---|
1 | name |
属性的名称。 |
2 | type |
默认情况下,类型是字符串,但它允许任何完全限定的类名作为数据类型。 |
3 | serializeas |
序列化此值时使用的格式。 |
4 | readonly |
只读配置文件值不能更改,默认情况下该属性为false 。 |
5 | defaultvalue |
如果配置文件不存在或没有信息,则使用默认值。 |
6 | allowanonymous |
一个布尔值,指示此属性是否可以与匿名配置文件一起使用。 |
7 | provider |
应该用来管理这个属性的配置文件提供程序。 |
匿名个性化允许用户在识别自己之前个性化网站。 例如,amazon.com允许用户在登录前添加购物车中的物品。要启用此功能,可以将web.config
文件配置为:
<anonymousidentification enabled ="true" cookiename=".aspxanonymoususer"
cookietimeout="120000" cookiepath="/" cookierequiresssl="false"
cookieslidingexpiration="true" cookieprotection="encryption"
coolieless="usedeviceprofile"/>