我有一个用户控件,它使用标准if(!IsPostBack){//initialize myself}
范例来避免在回发期间重新进行初始化(因此,为了增加 ViewState 的使用,交易更少的 DB 命中)。这种方法在大多数情况下都很适合我,但有一个地方我想在回发期间将此控件添加到控件层次结构“后期”。
当然,这会导致初始化逻辑失败,并使控件呈现为未初始化状态。
我应该使用什么保护来确定我是否应该初始化,因为!IsPostBack
不是切割它?我可以在 期间设置一个标志LoadViewState
,但这似乎有点骇人听闻。我想找到一些仅在控件首次添加到控件层次结构时才会发生的条件,并以此为关键。存在这样的条件吗?
[编辑] 包含页面的示例伪代码如下:
protected void Page_Prerender(object sender, EventArgs e)
{
Controls.Add(LoadControl("some_control.ascx"));
}
有没有办法some_control
知道它被添加晚了?