链接到LinkBut​​ton.Click的事件处理程序在页面加载时被调用

链接到LinkBut​​ton.Click的事件处理程序在页面加载时被调用

问题描述:

这是我正在使用的代码。我理解它的方式,LinkBut​​ton1_Click应该只在我点击LinkBut​​ton1时被调用。不幸的是,该方法在页面加载时被调用,所以我迷失了方向。代码中有什么地方有错吗?链接到LinkBut​​ton.Click的事件处理程序在页面加载时被调用

protected void LinkButton1_Click(object sender, EventArgs e) 
{ 
     //Do something 
} 

override protected void OnInit(EventArgs e) 
{ 
     InitializeComponent(); 
     base.OnInit(e); 
} 
private void InitializeComponent() 
{ 
     this.Load += new System.EventHandler(this.Page_Load); 
     this.LinkButton1.Click += new EventHandler(this.LinkButton1_Click);   
} 

感谢您的帮助

+0

执行初始请求或页面时执行的'LinkBut​​ton1_Click'方法,是否返回给客户端,并在该LinkBut​​ton1的Click事件之后触发? – 2012-08-14 15:17:27

+1

在您的@Page指令中,AutoEventWireup属性是否设置为true?由于您手动连接了事件处理程序,因此请确保将其设置为false。不确定按钮点击处理程序,但Page_Load将另外发射两次。 – 2012-08-16 07:19:16

+0

我刚刚尝试完全相同的东西,但它对我来说工作得很好!虽然一旦你点击链接按钮,然后刷新页面,然后回发再次发生,链接按钮事件处理程序被再次调用。但是这可以通过在OnInit()中执行IsPostBack检查来解决。 AutoEventWireUp是真的,所以也没有阻碍任何事情。 – Amn 2012-08-17 12:13:54

如果你不是从代码中调用“LinkBut​​ton1_Click”,或使用一些JavaScript终于触发这个方法,那么这不应该发生。 但是,我有类似的问题,由Visual Studio调试输出引起的。 转到Visual Studio主菜单并选择“Build” - >“Clean Solution”。 您也可以从设计师中删除您的“LinkBut​​ton1”,并强制重建解决方案。这应该强制调试文件被重建,并且幽灵呼叫将消失。