要求:
- 使用Session记录放入购物车的商品;
- 分别有两个页面:一是购物页面;二是购物车页面;
- 购物页面包含商品列表(CheckBoxList)和两个按钮;
- 购物车页面包含想购买的商品列表和两个按钮;
- 在购物车页面,当按下“放入购物车”按钮,用Session记录商品名称,商品名称之间使用“逗号”隔开;
- 在购物车页面,根据Session取出商品,利用逗号分割出所有商品,放入购买列表中;
结果:
关键代码:
Default.aspx:
<form id="form1" runat="server">
<div>
<asp:CheckBoxList ID="CheckBoxList1" runat="server">
<asp:ListItem>三文鱼</asp:ListItem>
<asp:ListItem>濑尿虾</asp:ListItem>
<asp:ListItem>小龙虾</asp:ListItem>
<asp:ListItem>小裙子</asp:ListItem>
<asp:ListItem>T恤</asp:ListItem>
<asp:ListItem>小零食</asp:ListItem>
</asp:CheckBoxList>
<asp:Button ID="submit" runat="server" Text="放入购物车" onClick="submit_Clicked"/>
<asp:Button ID="visit" runat="server" Text="查看购物车" OnClick="visit_Clicked"/>
<br />
</div>
</form>
Default.aspx.cs
protected void visit_Clicked(object sender, EventArgs e){
Response.Redirect("Default2.aspx");
}
protected void submit_Clicked(object sender, EventArgs e){
for (int i = 0; i < CheckBoxList1.Items.Count; i++){
if(CheckBoxList1.Items[i].Selected == true){//将选中的项添加到session
Session["goods"]+=CheckBoxList1.Items[i].Value+",";
}
}
}
Default2.aspx
<form id="form1" runat="server">
<div>
<asp:CheckBoxList ID="CheckBoxList1" runat="server">
</asp:CheckBoxList>
<asp:Button ID="empty" runat="server" Text="清空购物车" onClick="empty_Clicked"/>
<asp:Button ID="return" runat="server" Text="继续购物" OnClick="return_Clicked"/>
</div>
</form>
Default2.aspx.cs
protected void Page_Load(object sender, EventArgs e)
{
Session.Timeout=1;//session过期时间1分钟
string[] sArray=Session["goods"].ToString().Split(',');//用逗号分隔开的字符串变成数组
//去掉重复值
ArrayList al = new ArrayList();
for (int i=0;i<sArray.Length;i++){
if (al.Contains(sArray[i]) ==false){//判断要拆分的字符串中是否已经存在于这个ArrayList中
al.Add(sArray[i]);//不存在则添加进ArrayList
}
}
//将ArrayList转换为string[]
string[] al2=new string[al.Count];
for(int i=0;i<al.Count;i++){
al2[i]=al[i].ToString();
}
//将数组中的元素添加到CheckBoxList
for(int i=0;i<al2.Length;i++){
if(al2[i]!=""){
CheckBoxList1.Items.Add(al2[i]);
}
}
}
protected void return_Clicked(object sender, EventArgs e){
Response.Redirect("Default.aspx");
}
protected void empty_Clicked(object sender, EventArgs e){
Session["goods"]="";//清空session
//将CheckBoxList中的项去掉
int iCount = CheckBoxList1.Items.Count;
for(int i=0;i<iCount;i++){
CheckBoxList1.Items.Remove(CheckBoxList1.Items[0]);
}
}