显示会话数组中的值

时间:2013-12-24 11:40:32

标签: 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"] = 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());
}

}

任何人都可以帮我显示会话中存储的值。请..

7 个答案:

答案 0 :(得分:2)

您需要创建一个循环以在会话中显示所有值。

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());
    }
}

答案 1 :(得分:1)

您不能response.write(Session["Cart"].Tostring())因为Session["Cart"]是ArrayList。你必须在response.write之前遍历那个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);
}

}

答案 2 :(得分:0)

因为您将ArrayList放入Session。然后当你调用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;

    // iterate items in session
    ArrayList cart = Session["Cart"] as ArrayList;
    foreach(var item in cart)
    {
        Response.Write(item.ToString());
    }
}

还有一件事,就是使用

List<int> 

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

答案 3 :(得分:0)

无需在Session["Cart"] = cart1;中将cart1分配回会话。要打印dealid,您需要编写类似Response.Write(Session["Cart"][0].ToString());

的内容

答案 4 :(得分:0)

迭代arraylist并构建必要的字符串。

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

答案 5 :(得分:0)

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

答案 6 :(得分:0)

对于使用以下代码的数组中的显示arraylist项目:

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