Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 以前的值在列表中被覆盖_C#_Datalist_Cart - Fatal编程技术网

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)+“产品”;
}
}
}