【问题标题】:Overriding Controls Collection on WebControl覆盖 WebControl 上的控件集合
【发布时间】:2009-04-16 15:44:13
【问题描述】:

我正在尝试覆盖从 WebControl 继承的控件的 Controls 集合,以便当用户向 WebControl 添加控件时,我可以在它之前和之后放置按钮,并将其放入自己的包装器中。像这样的:

protected override ControlCollection Controls
{
    EnsureChildControls();
    return this._panel.Controls;
}

但是,当我这样做时,子控件的视图状态由于某种原因没有得到维护。有什么想法吗?

谢谢!

【问题讨论】:

    标签: c# asp.net controls custom-server-controls


    【解决方案1】:

    ViewState 是与控制树并行构建的对象图,因此这些类型的更改往往会产生您所描述的副作用。可以说您实际上是在劫持 Controls 对象并赋予它不同的含义,这并不是真正的覆盖意图。相反,覆盖是为了提供不同的机制来实现相同的含义或意图。 “我的一个孩子的孩子控件”“我的孩子控件”不同。

    有更好的方法来完成您所描述的内容。一种可能是在您的控件上显式公开一个属性,该属性是用户应将其控件添加到的“区域”。如果意图是让它成为一个复杂的控件,它有一个可自定义的区域,那么就暴露该区域。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-18
      • 2013-07-15
      • 2011-12-26
      相关资源
      最近更新 更多