在前面的例子当中,用户如果要使用Profile,可以有两种状态,一种是登陆后使用,另一种是不登陆匿名使用Profile。但是在一些电子商务应用中,往往用户在匿名状态中使用购物车,但是在结账的时候是要求登陆或是注册的。这就需要将用户匿名状态下添加进购物车的数据迁入用户登录后的购物车当中。要实现这种效果就必须编写代码才能实现:
在实现本例的过程中,关键是实现了ProfileModule类中的MigrateAnonymous事件。该事件在匿名用户登录时,且Profile中存在数据时触发。与其他事件不同的是,该事件处理程序必须在Global.asax文件中定义。
具体做法如下:
在项目中添加一个Global.asax文件,复制以下代码到文件当中
void Profile_MigrateAnonymous(object sender, ProfileMigrateEventArgs pe)
{
//取得该用户在匿名状态下的数据
ProfileCommon pc = Profile.GetProfile(pe.AnonymousID);
//判断购物车中是否添加了数据
if (pc.Cart.Count!=0)
{
//如果有数据,则将匿名状态下添加的商品添加到登陆后的购物车当中
//注意;Profile.Cart存放的是登陆后的数据
//pc.Cart是该用户在匿名状态下添加的数据
Profile.Cart = pc.Cart;
}
//删除匿名用户在aspnet_users表中的记录
Membership.DeleteUser(pe.AnonymousID);
//删除匿名用户Profile数据
ProfileManager.DeleteProfile(pe.AnonymousID);
//删除匿名用户标识
AnonymousIdentificationModule.ClearAnonymousIdentifier();
}
ok.就这么简单~~
代码下载:
/Files/jhxk/Profile/ProfileSources.rar