【问题标题】:Web user control loses properties on postbackWeb 用户控件在回发时丢失属性
【发布时间】:2010-12-27 07:55:08
【问题描述】:

我创建了一个用户控件,其中包含一个名为“DialogClosed”的公共事件。

这个用户控件也有一个按钮。当用户点击按钮时,后台代码会触发“DialogClosed”事件。

问题是用户点击按钮后,导致回发,创建了我的控件的一个新实例,我的控件失去了他所有的属性,因为原来的实例不再存在。

所以当我触发事件时,它会引发异常(因为“DialogClosed”== null)

【问题讨论】:

    标签: asp.net controls


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

        是否为控件启用了 ViewState?

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

        【讨论】:

        • 我应该在用户控件本身还是在使用页面中启用视图状态?
        • 你说......“问题是用户点击按钮后,它导致回发,这创建了我的控件的一个新实例,我的控件失去了他的所有属性.. 。”所以这取决于“MyControl”是什么。如果有问题的属性属于 UserControl,那么这需要 UserControl 启用视图状态。如果它是 UserControl 上的自定义属性,请确保此属性相应地更新视图状态。 stackoverflow.com/questions/1673975/viewstate-as-attribute
        猜你喜欢
        • 1970-01-01
        • 2010-11-18
        • 2016-05-23
        • 1970-01-01
        • 1970-01-01
        • 2013-02-04
        • 2010-11-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多