我创建了一个usercontrol,它有一个名为“DialogClosed”的公共事件。
此用户控件还有一个按钮。当用户单击该按钮时,后台代码将触发“DialogClosed”事件。
问题是,在用户点击按钮后,它会导致回发,这会创建我的控件的新实例,并且我的控件丢失了所有属性,因为原始实例不再存在。
因此,当我触发事件时,它会抛出异常(因为“DialogClosed”== null)
答案 0 :(得分:1)
也许我错过了一些东西......但是你不能在创建控件时检查页面的IsPostback属性,以确保不在回发上创建控件吗?
此外,您在什么情况下创建控件?
答案 1 :(得分:0)
是否为控件启用了ViewState?
如果是,则需要在页面的Init Event上实例化UserControl,以便在回发时保留属性,除非您只是在aspx标记中声明它。
答案 2 :(得分:0)
您需要在回发页面后重新绑定事件处理程序。但是如果启用了viewstate,则不应丢失属性。