ASP.net用Session做购物车的问题

llc961478 2013-10-31 03:44:09
用二位数组储存购物商品和价格两个信息储存在Session中,在商品页面点加入购物车,商品成功加入 但是点其他商品加入购物车以后数组就会清空永远只有一个信息,请问问题出在那?

public partial class _Default : System.Web.UI.Page
{
SqlDataReader sdr;

string[,] ary = new string[50, 2];
protected void Page_Load(object sender, EventArgs e)
{

Session.Timeout = 6000;
sltpdinfo();
}
protected void sltpdinfo()
{

SqlConnection scn = new SqlConnection("Data Source=.\\SQLEXPRESS;AttachDbFilename='d:\\My Documents\\Visual Studio 2005\\WebSites\\b2cweb\\App_Data\\b2cdatabase.mdf';Integrated Security=True;User Instance=True");
SqlCommand sltpd = new SqlCommand("select pcode,pname,pscprice from product where pcode=@pcode",scn);
scn.Open();
SqlParameter pcode = new SqlParameter("pcode",Request.QueryString["pcode"]);
sltpd.Parameters.Add(pcode);
sdr = sltpd.ExecuteReader();
sdr.Read();

}
protected void btnpay_Click(object sender, EventArgs e)
{

}
protected void btnadd_Click(object sender, EventArgs e)
{

string[,] ary = new string[50, 2];
Session["pcode"] = sdr[0];
Session["pname"] = sdr[1];
Session["pscprice"] = sdr[2];
Session["mycar"] = ary;
if (ary[0,0]==null)
{
ary[0,0] = Session["pname"].ToString();
ary[0,1] = Session["pscprice"].ToString();
}
else
{
for (int i = 0; i < 50; i++)
{
if (ary[i, 0] == Session["pname"].ToString())
{
ary[i + 1, 0] = Session["pname"].ToString();
ary[i + 1, 1] = Session["pscprice"].ToString();
}
}
}

Response.Redirect("~/shopcar.aspx");
}
}
...全文
214 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
gclol 2013-10-31
  • 打赏
  • 举报
回复
把整个数组放到Session里,Session["Cart"]=ary;string[,] ary = Session["Cart"] as string[,]; 要不每次都是建一个空数组,然后把你点击的那件商品id放到数据的第一项。
手抓宝 2013-10-31
  • 打赏
  • 举报
回复
string[,] ary = new string[50, 2];每次都是新数组。应该已追加的方式写入sesson 另外,购物车半小时就没了,为什么不用cooike或者数据库来存储购物车?
feiyun0112 2013-10-31
  • 打赏
  • 举报
回复
string[,] ary = new string[50, 2];

你每次都建个空数组

string[,] ary;
if(Session["mycar"]!=null)
{
ary = Session["mycar"] as string[,];
}
else
{
ary = new string[50, 2];
}


*****************************************************************************
签名档: http://feiyun0112.cnblogs.com/
md5e 2013-10-31
  • 打赏
  • 举报
回复
一般这样工作量太大,我们只用SessionID来做购物车的临时ID就可以了,记录还在放到数据库中

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧