Попытка динамически добавить пользовательский элемент управления, который динамически генерирует контент.Пользовательский элемент управления не может получить дескриптор панели для вставки элементов управления.
Сначала у меня есть страница (test.aspx):
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<asp:Panel ID="Panel1" runat="server">
</asp:Panel>
</form>
</body>
</html>
код позади:
public partial class test : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
TestUserControl uc = new TestUserControl();
Panel1.Controls.Add(uc);
//this is where the error happens:
uc.Fill();
}
}
, а затем вот пользовательский элемент управления:
<asp:Panel ID="pnlTest" runat="server" >
</asp:Panel>
и код позади:
public partial class TestUserControl: System.Web.UI.UserControl
{
protected void Page_Load(object sender, EventArgs e)
{
}
public void Fill()
{
Label lbl = new Label();
lbl.Text = "test";
//This is where pnlTest is null and I get "Object Reference Not Found..."
pnlTest.Controls.Add(lbl);
}
}
Итак ... Это похоже на точку, в которой я вызываю Fill() перед отображением пользовательского элемента управления, поэтому pnlTest не был создан.Но я не уверен, где вызывать uc.Fill () из test.aspx ... Я пробовал Page_PreRenderComplete, но это тоже не сработало ...
(если вы видите неправильное имясоответствует ... это, вероятно, не ошибка ... имена были изменены, чтобы защитить невинных)