我有一个带有网格产品的网络表单。当您点击产品时,它会转到显示单个产品的页面,其中包含“添加到购物车”按钮。我想要做的是当我点击“添加到购物车”按钮时,每当用户点击“添加到购物车”按钮时,会话就会将productId的查询字符串存储在数组列表中。我能够将它存储在会话变量中,但是当我想显示所有查询字符串时,只显示最新的查询字符串。提前谢谢。
以下是“添加到购物车”按钮的代码:
protected void btnAdd_Click(object sender, EventArgs e)
{
string productId;
ArrayList arProduct = new ArrayList();
if (Request.QueryString.Get("ProductId") != null)
{
productId = Request.QueryString.Get("ProductId");
arProduct.Add(productId);
}
Session["Cart"] = arProduct;
Response.Redirect("Cart.aspx");
}
以下是Cart.aspx页面加载的代码:
protected void Page_Load(object sender, EventArgs e)
{
if (Session["Cart"] != null)
{
lblProducts.Text = "Here are your products: " + "<ul>";
ArrayList alProduct = new ArrayList();
alProduct = (ArrayList)Session["Cart"];
foreach (string item in alProduct)
{
lblProducts.Text += "<li>" + item + "</li>";
}
lblProducts.Text += "</ul>";
}
}
答案 0 :(得分:1)
点击“添加”后,您每次都会创建一个新的arProduct
并将其放入Session["Cart"]
。因此,先前的添加将被覆盖。您需要在add事件处理程序中重用Session['Cart']
。
protected void btnAdd_Click(object sender, EventArgs e)
{
string productId;
ArrayList arProduct = Session['Cart'] as ArrayList;
if(arProduct == null)
{
arProduct = new ArrayList();
Session['Cart'] = arProduct;
}
if (Request.QueryString.Get("ProductId") != null)
{
productId = Request.QueryString.Get("ProductId");
arProduct.Add(productId);
}
Session["Cart"] = arProduct;
Response.Redirect("Cart.aspx");
}
编辑:
为了它的价值,我会将arProduct的代码放入属性中。并在btnAdd_Click
处理程序和页面加载