基于昨天你帮助我的一个帖子。做了个测试。 int a
{
get { return (int)ViewState["a"]; }
set { ViewState["a"] = value; }
} protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack)
ViewState["a"] = 1;
Response.Write(a);
}
protected void Button1_Click(object sender, EventArgs e)
{
a += 1;
}
protected void Button1_Click(object sender, EventArgs e)
{
a -+= 1;
}这里是我的源文件,执行时,首次打开页面,输出1。当点击button1后,理论上应该是ViewState["a"]=2,int类型的变量a也是等于2,页面输出2,结果页面却还是输出1。当我再次点击button1,理论上应该是ViewState["a"]=3,int类型的变量a也是等于3,页面输出3,结果却是页面输出2,为什么噢?我Debug时的情况,在Button设置断点。点击Button后,a的值为2。回发页面完毕,在Page_Load中新建了一个int c =a,测试C的值为1,也就说,我在点击Button后a的值确实正确加1,可回发后,却错误了。
{
get { return (int)ViewState["a"]; }
set { ViewState["a"] = value; }
} protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack)
ViewState["a"] = 1;
Response.Write(a);
}
protected void Button1_Click(object sender, EventArgs e)
{
a += 1;
}
protected void Button1_Click(object sender, EventArgs e)
{
a -+= 1;
}这里是我的源文件,执行时,首次打开页面,输出1。当点击button1后,理论上应该是ViewState["a"]=2,int类型的变量a也是等于2,页面输出2,结果页面却还是输出1。当我再次点击button1,理论上应该是ViewState["a"]=3,int类型的变量a也是等于3,页面输出3,结果却是页面输出2,为什么噢?我Debug时的情况,在Button设置断点。点击Button后,a的值为2。回发页面完毕,在Page_Load中新建了一个int c =a,测试C的值为1,也就说,我在点击Button后a的值确实正确加1,可回发后,却错误了。
button1_click(..)
{
get { return (int)ViewState["a"]; }
set { ViewState["a"] = value; }
} protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack)
ViewState["a"] = 1;
}
protected void Button1_Click(object sender, EventArgs e)
{
a += 1;
Response.Write(a);
}
protected void Button1_Click(object sender, EventArgs e)
{
a -+= 1;
Response.Write(a);
}
因为我是用ViewState进行 Gridview控件分页 实现UpdatePanel中无刷新翻页,用ViewState保存页面数。
所以不在Button中进行额外操作。
{
a += 1;
ViewState["a"] =a;
}
这样就出来了
我以为当点击Button后,回发本页状态到服务器,a的值已经成功+1,新请求页面的Page_Load才开始执行啊,然后从ViewState中取出数据。
给我说说细节吧,这点真的不懂,查资料也没查到。
{
a += 1;
}
protected void Button1_Click(object sender, EventArgs e)
{
a -+= 1;
}为什么有两个Button1_Click 事件