【发布时间】:2010-12-22 15:46:18
【问题描述】:
我有一个带有按钮的 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);
}
}
事件处理程序在第一部分代码中分配正确,但是由于按下保存按钮会导致回发,SaveButtonEvent 事件处理程序被设置回为空,因此没有任何反应。
如何在回发期间保留 SaveButtonEvent 事件处理程序的内容,或者有更好的方法吗?
编辑:
我可以通过将 EventHandler 保存到会话中来使其工作,但这似乎不是一个好主意。
【问题讨论】:
-
您能展示一下您是如何创建按钮的吗?以声明方式还是以编程方式?如果是这样,在 Page Live Cycle 的哪个位置?
-
另外,您可以使用按钮的 CommandArgument(请参阅 msdn.microsoft.com/de-de/library/…),然后让案例处理您的各种选项。