asp.net 怎么在网页上记录客户浏览过的商品呢
时间:2011-12-14
来源:互联网
据说可以用JS或者cookie做,希望大虾们帮帮忙!!最好有代码哦!!
O(∩_∩)O谢谢各位啦~~
O(∩_∩)O谢谢各位啦~~
作者: liuyang0515 发布时间: 2011-12-14
网站是用asp.net写的,现在我想要实现一个功能,就是在网页上能够看到客户浏览过产品的历史记录,不用登录会员,就是对于一个陌生人怎么记录他浏览过的产品,请高手给个思路,或者给代码更好!!万分感谢~~
作者: liuyang0515 发布时间: 2011-12-14
你可以判断用户有没有登陆 在浏览商品的时候你可以存入数据库或者cookie来实现
作者: hefeng_aspnet 发布时间: 2011-12-14
public partial class 商品的页面: System.Web.UI.Page
{
List<string> list;
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
// 这里是浏览商品的页面的Load
// 会话Session["track"]里边记录的是浏览过的东西,是个List,
// 如果商品名称唯一,可以用List<string>,记录商品的名称.
// 也可以用数值List<int>记录商品的ID,或者List<string>记录商品的ID数字串
string str = "这是我现在浏览的商品名称"; // 这里你要从数据库获取此商品的名称或ID
List<string> list;
if (Session["track"] == null)
{
// 新会话(第一次或以前的超时),创建新list的实例.
// 在配置文件中,<sessionState timeout="30" 设置超时数,这里是间隔30分钟不访问,会话丢失.
list = new List<string>();
}
else
{
// 会话存在,准备读取会话中的数据.
list = (List<string>)Session["track"];
}
if (list.Contains(str))
list.Remove(str); // 如果这次浏览的商品在浏览记录中,删除后重新添加进去,保持浏览顺序
if (list.Count == 10)
list.RemoveAt(0); // 浏览记录保存10个,到了10个删除最老的一个记录.
list.Add(str); // 浏览顺序为list[9] list[8].....list[1] list[0]
Session["track"] = list; // 把list更新到Session
///////////////////////////////////////////////////////////////
for (int i = list.Count - 1; i >= 0; i--)
{
string name = list[i];
// 在这里处理浏览记录,倒着读list,然后转成超链接,你也可以显示出这个物品的图片信息等,显示到网页中.
}
this.list = list;// 或者,你把list值保存到页面类的自定义属性里边,在其它地方处理.
}
.
.
.
.
.
.
}
默认情况下,session是作为cookie方式保存的.
<sessionState mode="[Off|InProc|StateServer|SQLServer|Custom]"
InProc 模式(默认),此模式将会话状态存储在 Web 服务器上的内存中。 这是默认值。关了浏览器就丢失了
StateServer 模式,此模式将会话状态存储在一个名为 ASP.NET 状态服务的单独进程中。 这确保了在重新启动 Web 应用程序时会保留会话状态,并让会话状态可用于网络场中的多个 Web 服务器。
SQLServer 模式将会话状态存储到一个 SQL Server 数据库中。 这确保了在重新启动 Web 应用程序时会保留会话状态,并让会话状态可用于网络场中的多个 Web 服务器。
Custom 模式,此模式允许您指定自定义存储提供程序。
如果你想要记录在客户端在关闭浏览器或以后上线还可存在,就要用StateServer和SQLServer模式.前者需要服务器启动状态服务(安装.net时带的一个组件),后者要求你的网站的数据库是asp.net自己配置的那个ASPNETDB.MDF文件.
使用cookie方法也差不多,cookie只能保存单个字符串,不能做为list保存,还有,需要自己手动管理超时时间.
另外,cookie是从Request.Cookies读取数据,从Response.Cookies保存数据.
把if (Session["track"] == null)
换成if (Request.Cookies["track"] == null)
把list = (List<string>)Session["track"];
换成list = new List<string>();
list.Add( Request.Cookies["track"]["0"]);
.......
list.Add( Request.Cookies["track"]["9"]);
还要判断Request.Cookies["track"]["0"] 到["9"] != null;
把Session["track"] = list;
换成Request.Cookies["track"]["0"] = list[0];
.........
Request.Cookies["track"]["9"] = list[9];
紧接着要Request.Cookies["track"]"].Expires = DateTime.Now.AddDays(50); //保存50天,可以直接设置时间用秒或50年.
麻烦,但好处是不要求数据库,不要状态服务,就可以保存数据50年.
{
List<string> list;
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
// 这里是浏览商品的页面的Load
// 会话Session["track"]里边记录的是浏览过的东西,是个List,
// 如果商品名称唯一,可以用List<string>,记录商品的名称.
// 也可以用数值List<int>记录商品的ID,或者List<string>记录商品的ID数字串
string str = "这是我现在浏览的商品名称"; // 这里你要从数据库获取此商品的名称或ID
List<string> list;
if (Session["track"] == null)
{
// 新会话(第一次或以前的超时),创建新list的实例.
// 在配置文件中,<sessionState timeout="30" 设置超时数,这里是间隔30分钟不访问,会话丢失.
list = new List<string>();
}
else
{
// 会话存在,准备读取会话中的数据.
list = (List<string>)Session["track"];
}
if (list.Contains(str))
list.Remove(str); // 如果这次浏览的商品在浏览记录中,删除后重新添加进去,保持浏览顺序
if (list.Count == 10)
list.RemoveAt(0); // 浏览记录保存10个,到了10个删除最老的一个记录.
list.Add(str); // 浏览顺序为list[9] list[8].....list[1] list[0]
Session["track"] = list; // 把list更新到Session
///////////////////////////////////////////////////////////////
for (int i = list.Count - 1; i >= 0; i--)
{
string name = list[i];
// 在这里处理浏览记录,倒着读list,然后转成超链接,你也可以显示出这个物品的图片信息等,显示到网页中.
}
this.list = list;// 或者,你把list值保存到页面类的自定义属性里边,在其它地方处理.
}
.
.
.
.
.
.
}
默认情况下,session是作为cookie方式保存的.
<sessionState mode="[Off|InProc|StateServer|SQLServer|Custom]"
InProc 模式(默认),此模式将会话状态存储在 Web 服务器上的内存中。 这是默认值。关了浏览器就丢失了
StateServer 模式,此模式将会话状态存储在一个名为 ASP.NET 状态服务的单独进程中。 这确保了在重新启动 Web 应用程序时会保留会话状态,并让会话状态可用于网络场中的多个 Web 服务器。
SQLServer 模式将会话状态存储到一个 SQL Server 数据库中。 这确保了在重新启动 Web 应用程序时会保留会话状态,并让会话状态可用于网络场中的多个 Web 服务器。
Custom 模式,此模式允许您指定自定义存储提供程序。
如果你想要记录在客户端在关闭浏览器或以后上线还可存在,就要用StateServer和SQLServer模式.前者需要服务器启动状态服务(安装.net时带的一个组件),后者要求你的网站的数据库是asp.net自己配置的那个ASPNETDB.MDF文件.
使用cookie方法也差不多,cookie只能保存单个字符串,不能做为list保存,还有,需要自己手动管理超时时间.
另外,cookie是从Request.Cookies读取数据,从Response.Cookies保存数据.
把if (Session["track"] == null)
换成if (Request.Cookies["track"] == null)
把list = (List<string>)Session["track"];
换成list = new List<string>();
list.Add( Request.Cookies["track"]["0"]);
.......
list.Add( Request.Cookies["track"]["9"]);
还要判断Request.Cookies["track"]["0"] 到["9"] != null;
把Session["track"] = list;
换成Request.Cookies["track"]["0"] = list[0];
.........
Request.Cookies["track"]["9"] = list[9];
紧接着要Request.Cookies["track"]"].Expires = DateTime.Now.AddDays(50); //保存50天,可以直接设置时间用秒或50年.
麻烦,但好处是不要求数据库,不要状态服务,就可以保存数据50年.
作者: hefeng_aspnet 发布时间: 2011-12-14
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28