为什么session不能累计,而字符串可以?

来源:百度知道 编辑:UC知道 时间:2024/06/25 08:41:35
protected void Page_Load(object sender, EventArgs e)
{
Session["abc"] = 1;
}

protected void Button1_Click(object sender, EventArgs e)
{

Session["abc"] =(int)Session["abc"] + 1;

this.Label1.Text += "<table border=1><tr><td>" + (int)Session["abc"] + "</td></tr></table>";
}

上面的代码显示了这么两个问题:
1、我希望session能随着按钮1的点击1、2、3、……这么一直递增下去,但是好象无法实现
2、但是label里显示的表格却能不停的累积,表格的行数每点一次按钮1就增加1行

这是怎么回事呢?这两个现象我都不明白

1、关键在于,你的Button被Click一下之后,Page_Load又执行了一次,所以,session["abc"]又变成了"1",所以(int)Session["abc"] + 1 永远为2

2、你label里由于每次点击有<table></table>,生成的是一个表格,按一次生成一个,如果想只升成一个表格,可以用
先定义txt="<table border=1>";
然后在按钮中循环点击生成
txt+="<tr><td>" + (int)Session["abc"] + "</td></tr>"

最后
this.Label1.Text = txt +"</table>";

或者干脆用模板,如repeater

因为 按下按钮Page_Load也会被执行。
改下代码试试看
protected void Page_Load(object sender, EventArgs e)
{
if( !IsPostBack )
{
Session["abc"] = 1;
}
}