我是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());
}
}
任何人都可以帮我显示会话中存储的值。请..
答案 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);
}