IsPostBack奇怪的现象

itboy3000 2003-07-23 03:33:14
以下是codebehind代码,为什么第一次访问的时候页面打印
1
但提交完后却打印出两个2?

public class Test:Page{
private void Page_Load(object sender,System.EventArgs e){
if(IsPostBack){
Response.Write("2");
}
else{
Response.Write("1");
}
}

override protected void OnInit(EventArgs e){
InitPage();
base.OnInit(e);
}

private void InitPage(){
this.Load += new System.EventHandler(this.Page_Load);
}
}
...全文
34 8 打赏 收藏 举报
写回复
8 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
RxitRose 2003-07-23
  • 打赏
  • 举报
回复
public class Test:Page{
private void Page_Load(object sender,System.EventArgs e){
if(!IsPostBack){
Response.Write("2");
}
else{
Response.Write("1");
}
}

override protected void OnInit(EventArgs e){
InitPage();
base.OnInit(e);
}

private void InitPage(){
this.Load += new System.EventHandler(this.Page_Load);
}
}
leojun 2003-07-23
  • 打赏
  • 举报
回复
我这边写你这段程序测试出来是对的 只有一个2!
leojun 2003-07-23
  • 打赏
  • 举报
回复
断点 查看一下程序的执行过程!
cainiao_2000 2003-07-23
  • 打赏
  • 举报
回复
不好意思,我也不知道,关注!
itboy3000 2003-07-23
  • 打赏
  • 举报
回复
我知道..但打印出来是
22
两个2:(
cainiao_2000 2003-07-23
  • 打赏
  • 举报
回复
IsPostBack是判断是否是第一次Page_Load的属性,所以你第一次访问时打印出1,因为单击按钮等很多事件都会回传造成Page_Load事件再次执行,而你后面提交的就引发了Page_Load事件的再次,但你用if语句做了判断,所以打印出2来
itboy3000 2003-07-23
  • 打赏
  • 举报
回复
晕,明明只有一行Response.Write,怎么调用两次了呢
  • 打赏
  • 举报
回复
这是对的!
发帖
.NET社区

6.1w+

社区成员

.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
帖子事件
创建了帖子
2003-07-23 03:33
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。