0

这个问题似乎与如何从用户控件访问页面控件有关?,但我不相信它是重复的。

我有许多用户控件需要在他们的事件Page期间访问该变量。Render当我将控件放在 .aspx 页面上时,这可以正常工作。但是,当我尝试像这样嵌套控件时:

Protected Overrides Sub Render(ByVal writer As HtmlTextWriter)
    Dim nestedControl = New CustomControl()

    helpIcon.RenderControl(writer)

    MyBase.Render(writer)
End Sub

Variable cannot be null: Page我从(嵌套的控件)Render事件中得到一个异常。CustomControl

有没有一种简单的方法来解决这个问题,以便在另一个控件的代码中构造的控件可以访问页面上下文?

4

2 回答 2

1

我看到控件的页面属性为空的唯一一次是控件尚未添加到控件集合中:例如

Me.Controls.Add(helpIcon) //This must happen before calling render

如果将控件添加到有根控件集合中,则无需调用 render 方法

于 2012-11-20T19:52:11.423 回答
1

您需要将控件添加到页面的控件树中,然后它将正常呈现而无需调用 Render()

Page.Controls.Add(new CustomControl());

您更有可能将其添加到页面上的某个容器中:

PlaceHolder1.Controls.Add(new CustomControl());
于 2012-11-20T20:13:16.063 回答