Asp.net Web用户控件在回发时丢失属性

Asp.net Web用户控件在回发时丢失属性,asp.net,controls,Asp.net,Controls,我创建了一个usercontrol,它有一个名为“DialogClosed”的公共事件 这个用户控件还有一个按钮。当用户单击按钮时,背景代码触发“DialogClosed”事件 问题是,在用户单击按钮后,它导致回发,从而创建了我的控件的新实例,并且我的控件由于原始实例不再存在而丢失了所有属性 因此,当我触发事件时,它会抛出一个异常(因为“DialogClosed”==null)可能我遗漏了一些东西……但是您不能在创建控件时检查页面的IsPostback属性,以确保控件不是在回发时创建的吗 另外,

我创建了一个usercontrol,它有一个名为“DialogClosed”的公共事件

这个用户控件还有一个按钮。当用户单击按钮时,背景代码触发“DialogClosed”事件

问题是,在用户单击按钮后,它导致回发,从而创建了我的控件的新实例,并且我的控件由于原始实例不再存在而丢失了所有属性


因此,当我触发事件时,它会抛出一个异常(因为“DialogClosed”==null)

可能我遗漏了一些东西……但是您不能在创建控件时检查页面的IsPostback属性,以确保控件不是在回发时创建的吗


另外,在什么情况下创建控件?

是否为控件启用了ViewState


如果是,则需要在页面的Init事件上实例化UserControl,以便在回发中保留属性,除非您只是在aspx标记中声明了它。

在回发页面后,需要重新绑定事件处理程序。但是,如果启用了viewstate,则属性不应丢失。

我应该在usercontrol本身或using页面上启用viewstate吗?您说过。。。。“问题是,在用户单击按钮后,它导致回发,从而创建了我的控件的新实例,并且我的控件丢失了所有属性…”因此这取决于“MyControl”是什么。如果所讨论的属性属于UserControl,则需要UserControl启用viewstate。如果它是UserControl上的自定义属性,请确保此属性相应地更新viewstate。