Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.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#_Asp.net_Session_Web_Web Deployment - Fatal编程技术网

C# 显示会话数组中的值

C# 显示会话数组中的值,c#,asp.net,session,web,web-deployment,C#,Asp.net,Session,Web,Web Deployment,我不熟悉asp.net和c。我正在使用会话数组将值列表存储到会话中。但是,当我尝试使用response.write方法显示值时,它不会在会话中给出确切的值,而是显示“System.Collections.ArrayList”。我用来在会话中添加值的代码如下所示 protected void Page_Load(object sender, EventArgs e) { if (Session["Cart"] == null) { Session["Cart"]

我不熟悉asp.net和c。我正在使用会话数组将值列表存储到会话中。但是,当我尝试使用response.write方法显示值时,它不会在会话中给出确切的值,而是显示“System.Collections.ArrayList”。我用来在会话中添加值的代码如下所示

protected void Page_Load(object sender, EventArgs e)
{

    if (Session["Cart"] == null)
    {
        Session["Cart"] = new ArrayList();
    }

    else
    {
        ArrayList cart = (ArrayList)Session["Cart"];
    }


}

protected void addtocart_Click(object sender, EventArgs e)
{
    int dealid = Convert.ToInt32(Request.QueryString.Get("deal"));
    ArrayList cart1 = new ArrayList();

    cart1 = (ArrayList)Session["Cart"];

    cart1.Add(dealid);

    Session["Cart"] = cart1;

    Response.Write(Session["Cart"].ToString());
}
}


有人能帮我显示会话中存储的值吗。请..

因为您已将ArrayList放入会话。然后,当您调用会话[“购物车”]时,它将其返回给您。如果要显示该列表中的所有项目,则需要如下迭代:

protected void addtocart_Click(object sender, EventArgs e)
{
    int dealid = Convert.ToInt32(Request.QueryString.Get("deal"));
    ArrayList cart1 = new ArrayList();

    cart1 = (ArrayList)Session["Cart"];

    cart1.Add(dealid);

    Session["Cart"] = cart1;

    // iterate items in session
    ArrayList cart = Session["Cart"] as ArrayList;
    foreach(var item in cart)
    {
        Response.Write(item.ToString());
    }
}
还有一件事,那就是使用

List<int> 
列表

比ArrayList更有用、更好,因为您不需要将对象强制转换为所需的类型。

无需在
会话[“Cart”]=cart1中将cart1分配回会话。要打印dealid,您需要编写类似于
Response.write(会话[“Cart”][0].ToString())的内容

迭代arraylist并生成必要的字符串

StringBuilder sb = new StringBuilder();
foreach(var obj in cart1)
{
  sb.Append(obj.ToString())
}
Response.Write(sb.ToString());

VisualStudio中有一个调试功能。在代码中设置断点。运行项目并使用F10或F11逐步完成代码。单击某个值并查看其内容。更多信息

您不能
响应.写入(会话[“购物车”].Tostring())
,因为
会话[“购物车”]
是ArrayList。在响应之前,必须循环遍历该arraylist。请按如下方式编写:

protected void addtocart_Click(object sender, EventArgs e)
{

int dealid = Convert.ToInt32(Request.QueryString.Get("deal"));
ArrayList cart1 = new ArrayList();

cart1 = (ArrayList)Session["Cart"];

cart1.Add(dealid);

Session["Cart"] = cart1;

ArrayList cart2 = new ArrayList();

cart2 = (ArrayList)Session["Cart"];
foreach(var item in cart2 )
{
  Response.WriteLine(item);
}

}

对于使用以下代码的阵列中的显示阵列列表项:

 foreach (var item in (ArrayList)Session["Cart"])
 {
            Response.Write(item);
 }

您需要创建一个循环来显示会话中的所有值

private ArrayList cart
{
    get
    {
        if (Session["Cart"] == null)
        {
            Session["Cart"] = new ArrayList();
        }
        return (ArrayList)Session["Cart"];
    }
    set
    {
        Session["Cart"] = value;
    }
}

protected void addtocart_Click(object sender, EventArgs e)
{
    int dealid = Convert.ToInt32(Request.QueryString.Get("deal"));
    cart.Add(dealid);
    foreach (var item in cart)
    {
        Response.Write(item.ToString());
    }
}