2010-12-22 42 views
2

我有一个带有按钮的asp.net页面,按钮需要在其上执行的事件需要变化,具体取决于在页面上选择了哪些选项。该按钮本身包含在母版页中,并且其操作受到在子页面中进行的选择的影响。动态事件处理程序在回发后丢失

要做到这一点,我有一个方法在母版页,由子页面调用,当用户按下按钮,传递事件处理程序供该按钮使用,然后分配给主页事件处理程序该按钮:

public void assignEvent(EventHandler saveEvent) 
    { 
      this.SaveButtonEvent+= saveEvent 
    } 

然后,当救母版页上的按钮,它调用事件处理

protected void save_Click(object sender, EventArgs e) 
    { 
     if (this.SaveButtonEvent != null) 
     { 
      this.SaveButtonEvent(this, e); 
     } 
    } 

事件处理程序中的代码的第一部分分配好了,但因为按保存按钮导致回发,SaveButtonEve nt事件处理程序被重新设置为空,所以什么都不会发生。

如何在回发期间保留SaveButtonEvent事件处理程序的内容,还是有更好的方法来做到这一点?

编辑:

我能得到这个通过保存事件处理程序的会话中工作,但是这似乎并不像一个伟大的想法。

+0

你能展示你如何创建按钮?声明式还是编程式?如果是这样的话,在页面活塞? – Marcel 2013-08-07 11:35:23

回答

0

当用户按下子页面中的按钮时,存储一个值(在视图状态中),指示应该传递什么事件处理程序。然后,在子页面的加载事件中,如果它是回发,请始终检查存储的值并通过调用母版页方法相应地分配事件处理程序。

相关问题