【发布时间】:2010-12-27 07:55:08
【问题描述】:
我创建了一个用户控件,其中包含一个名为“DialogClosed”的公共事件。
这个用户控件也有一个按钮。当用户点击按钮时,后台代码会触发“DialogClosed”事件。
问题是用户点击按钮后,导致回发,创建了我的控件的一个新实例,我的控件失去了他所有的属性,因为原来的实例不再存在。
所以当我触发事件时,它会引发异常(因为“DialogClosed”== null)
【问题讨论】:
我创建了一个用户控件,其中包含一个名为“DialogClosed”的公共事件。
这个用户控件也有一个按钮。当用户点击按钮时,后台代码会触发“DialogClosed”事件。
问题是用户点击按钮后,导致回发,创建了我的控件的一个新实例,我的控件失去了他所有的属性,因为原来的实例不再存在。
所以当我触发事件时,它会引发异常(因为“DialogClosed”== null)
【问题讨论】:
您需要在页面回发后重新绑定事件处理程序。但如果启用了视图状态,属性不应丢失。
【讨论】:
也许我遗漏了一些东西...但是您不能在创建控件时检查页面的 IsPostback 属性,以确保控件不是在回发时创建的吗?
另外,您在什么情况下创建控件?
【讨论】:
是否为控件启用了 ViewState?
如果是,则需要在页面的 Init 事件上实例化 UserControl,以便属性在回发中持久化,除非您只是在 aspx 标记中声明它。
【讨论】: