如何防止在Asp.net页面中添加相同的事件?

时间:2009-06-03 01:49:27

标签: c# asp.net

我一直在Page_Load函数中编写代码

protected void Page_Load(object sender, EventArgs e)
{
    if(!IsPostBack)
    {
        UserControl1.Button_Clicked += new EventHandler(UserControl1_Button_Clicked);
    }
}

但是当页面从另一页面指向此页面时,将再次添加相同的功能。

有没有什么方法可以防止它发生?

我正在尝试使用会话来阻止它,但我想知道有没有更好的方法可以做同样的工作。 非常感谢!

3 个答案:

答案 0 :(得分:1)

在C#ASP.NET中,每次加载页面时都必须添加控件的事件处理程序。这就是框架的运作方式。

因此,如果您要为控件声明自定义事件处理程序,则在Page的Page_Init事件中更清晰。

最后,因为这需要每次都发生,所以不要将代码包装在“if(!IsPostBack)”条件中。

答案 1 :(得分:1)

我建议您在.aspx页面中设置autoeventwireup = false。然后,在您的代码隐藏页面(.cs文件)中,在page_init中为您的按钮处理程序添加事件。

我已经看到,如果我将其保留为真,那么有时会导致我的事件被解雇两次 按钮不需要(!isPostBack)条件。

答案 2 :(得分:0)

愚蠢的方法是这样的:

声明一个变量 Private a As Boolean = True

受保护的子cmd_Entry_Click(ByVal sender As Object,ByVal e As System.EventArgs)处理cmd_Entry.Click         如果a = IsPostBack然后             保存数据()             clearData()             a =假         万一 结束子

应该有效:D