C# 以前的值在列表中被覆盖
我正在尝试将存储在会话中的项目添加到购物车,但在向购物车添加新产品时,会话值会被覆盖C# 以前的值在列表中被覆盖,c#,datalist,cart,C#,Datalist,Cart,我正在尝试将存储在会话中的项目添加到购物车,但在向购物车添加新产品时,会话值会被覆盖 private List<int> newCart = new List<int>(); protected void dlstCartItems_ItemCommand(object source, DataListCommandEventArgs e) { if (e.CommandName == "AddToCart") {
private List<int> newCart = new List<int>();
protected void dlstCartItems_ItemCommand(object source, DataListCommandEventArgs e)
{
if (e.CommandName == "AddToCart")
{
var arg = e.CommandArgument;
DropDownList ddlList = e.Item.FindControl("ddlAvailableSizes"+e.CommandArgument) as DropDownList;
int currentItemID = int.Parse(this.dlstCartItems.DataKeys[e.Item.ItemIndex].ToString());
if (ddlList.SelectedIndex == 0)
{
ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "alert", "alert('Please Select Size');", true);
}
else
{
newCart.Add(Convert.ToInt32(e.CommandArgument));
Session["Cart"] = newCart;
if (Session["Cart"] != null)
{
int ct = ((List<int>)Session["Cart"]).Count;
lblCartMessage.Text = Convert.ToString(ct)+" "+"Product";
}
}
}
}
private List newCart=newlist();
受保护的无效dlstCartItems\u ItemCommand(对象源,DataListCommandEventArgs e)
{
如果(e.CommandName==“AddToCart”)
{
var arg=e.CommandArgument;
DropDownList ddlist=e.Item.FindControl(“ddlAvailableSizes”+e.CommandArgument)作为DropDownList;
int currentItemID=int.Parse(this.dlstCartItems.DataKeys[e.Item.ItemIndex].ToString());
如果(ddlist.SelectedIndex==0)
{
ScriptManager.RegisterClientScriptBlock(this,this.GetType(),“alert”,“alert('请选择大小');”,true);
}
其他的
{
newCart.Add(Convert.ToInt32(e.CommandArgument));
会话[“购物车”]=新购物车;
如果(会话[“购物车”]!=null)
{
int ct=((列表)会话[“购物车])。计数;
lblCartMessage.Text=Convert.ToString(ct)+“产品”;
}
}
}
}
我的问题是,每当我添加新产品时,列表中不再有旧产品,并且产品计数始终为1。要添加的列表应该在类级别定义。无论何时添加新产品,private List newCart=new List();不应执行,否则添加后计数将为零。您将只剩下最新添加的内容。可能在执行dlstCartItems\u ItemCommand时,newcart始终为空,因此
Session["Cart"] = newCart;
清除值您正在通过
会话[“cart”]=newCart覆盖购物车代码>。
要执行此操作,请编写:
newCart = Session["Cart"] as List<int>;
if (newCart == null)
{
newCart = new List<int>();
Session["Cart"] = newCart;
}
// Rest of the code adding to newCart etc.
newCart=Session[“Cart”]作为列表;
if(newCart==null)
{
newCart=新列表();
会话[“购物车”]=新购物车;
}
//其余代码添加到newCart等。
受保护的无效dlstCartItems\u ItemCommand(对象源,DataListCommandEventArgs e)
{
列出新购物车
if (e.CommandName == "AddToCart")
{
var arg = e.CommandArgument;
DropDownList ddlList = e.Item.FindControl("ddlAvailableSizes" + e.CommandArgument) as DropDownList;
int currentItemID = int.Parse(this.dlstCartItems.DataKeys[e.Item.ItemIndex].ToString());
if (ddlList.SelectedIndex == 0)
{
ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "alert", "alert('Please Select Size');", true);
}
else
{
if (Session["Cart"] == null)
{
newCart = new List<int>();
newCart.Add(Convert.ToInt32(e.CommandArgument));
Session["Cart"] = newCart;
}
else
{
newCart = Session["Cart"] as List<int>;
newCart.Add(Convert.ToInt32(e.CommandArgument));
Session["Cart"] = newCart;
}
int ct = ((List<int>)Session["Cart"]).Count;
lblCartMessage.Text = Convert.ToString(ct) + " " + "Product";
}
}
}
if(e.CommandName==“AddToCart”)
{
var arg=e.CommandArgument;
DropDownList ddlist=e.Item.FindControl(“ddlAvailableSizes”+e.CommandArgument)作为DropDownList;
int currentItemID=int.Parse(this.dlstCartItems.DataKeys[e.Item.ItemIndex].ToString());
如果(ddlist.SelectedIndex==0)
{
ScriptManager.RegisterClientScriptBlock(this,this.GetType(),“alert”,“alert('请选择大小');”,true);
}
其他的
{
if(会话[“购物车”]==null)
{
newCart=新列表();
newCart.Add(Convert.ToInt32(e.CommandArgument));
会话[“购物车”]=新购物车;
}
其他的
{
newCart=会话[“购物车”]作为列表;
newCart.Add(Convert.ToInt32(e.CommandArgument));
会话[“购物车”]=新购物车;
}
int ct=((列表)会话[“购物车])。计数;
lblCartMessage.Text=Convert.ToString(ct)+“产品”;
}
}
}