这个问题似乎与How to access page controls from user control?有关,但我不相信它是重复的。
我有许多用户控件需要在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
例外。
有没有一种简单的方法来解决这个问题,以便在另一个控件的代码后面构造的控件可以访问Page上下文?
答案 0 :(得分:1)
我唯一一次看到控件的页面属性为null是指控件尚未添加到控件集合中时:例如
Me.Controls.Add(helpIcon) //This must happen before calling render
如果将控件添加到有根控件集合
,则无需调用render方法答案 1 :(得分:1)
你需要添加控件页面的控制树,然后它将正常呈现而不必调用Render()
Page.Controls.Add(new CustomControl());
您更有可能将其添加到页面上的某个容器中:
PlaceHolder1.Controls.Add(new CustomControl());