代码之家  ›  专栏  ›  技术社区  ›  oglester

扩展asp.net web控件时,应在哪个事件中注入其他web控件?

  •  3
  • oglester  · 技术社区  · 17 年前

    我试图通过扩展现有控件来避免复合控件或使用and和ASCX。但是,我在将控件添加到继承控件并保持其视图状态/回发完整性方面遇到了问题。每当我在预渲染期间添加控件时,控件都会显示,但回发会引发viewstate异常。我尝试在那里和LoadViewState期间添加它们(这当然是一个很愚蠢的尝试)。Init在我扩展的控件中不可用。

    例外是 Sys.WebForms.PageRequestManagerServerErrorException: 加载的必须与控制树匹配 用于在运行期间保存viewstate的 先前的请求。例如 动态添加控件时 在回发期间添加的控件必须 要求

    2 回复  |  直到 17 年前
        1
  •  4
  •   Zachary Yates    17 年前

    实际上,微软说你应该覆盖 CreateChildControls 方法

    protected override void CreateChildControls(){
      Controls.Add(someControl);
      base.CreateChildControls();
    }
    

    希望有帮助!

        2
  •  3
  •   user38123    17 年前

    您应该将它们添加到OnInit或CreateChildControls中。无论如何,要避免ViewState出现问题,请阅读 this GREAT article . 示例“4.以编程方式初始化子控件”可能就是您的例子。