Asp.net .ascx.cs中.ascx上的控件为空
我正在创建一个自定义web控件,但在.cs文件中引用.ascx文件时,该文件上的控件为空。我错过什么了吗 .ASCX Test.aspxAsp.net .ascx.cs中.ascx上的控件为空,asp.net,Asp.net,我正在创建一个自定义web控件,但在.cs文件中引用.ascx文件时,该文件上的控件为空。我错过什么了吗 .ASCX Test.aspx MyButton button = new MyButton(); button.Process(); 在以下情况下,控件可以为空: 位于占位符中,您可以通过编程方式删除它来更改控件 位于缓存中,asp.net将使用缓存的渲染数据,而不会再次创建它 位于ContentPlaceHolder中,您可以使用其他内容更改该内容 一般来说,可以在运行时添加、删除和删
MyButton button = new MyButton();
button.Process();
在以下情况下,控件可以为空:
占位符中,您可以通过编程方式删除它来更改控件
ContentPlaceHolder
中,您可以使用其他内容更改该内容每当您想从代码隐藏中添加动态控件时,必须将该控件添加到任何aspx或ASCXHTML控件中 代码应该是这样的:
Button btnNew = new MyButton();
btnNew.Process();
btnNew.Controls.Add(pnlTest);
其中“pnlTest”应该是ascx页面中定义的任何html控件
更新
这是你帖子的最新答案
Button btnNew = new Button();
btnNew.Click += new EventHandler(btnNew_Click);
btnNew.ID = "btnNew";
void btnNew_Click(object sender, EventArgs e)
{
Process();
}
btnNew.Controls.Add(pnlTest);
它将为您工作。调用
LoadControl()
,而不是实例化该项。我的要求是需要根据数据库中的指令动态创建所有控件。我尝试了这些,但都失败了,因为“对象引用为null”MyButton button=Page.LoadControl(typeof(MyButton),null)作为MyButton;MyButton button=Page.LoadControl(“MyButton.ascx”)作为MyButton;这正是我正在做的,但它甚至在我将其添加到面板之前就失败了。它在btnNew.Process()失败;
Button btnNew = new MyButton();
btnNew.Process();
btnNew.Controls.Add(pnlTest);
Button btnNew = new Button();
btnNew.Click += new EventHandler(btnNew_Click);
btnNew.ID = "btnNew";
void btnNew_Click(object sender, EventArgs e)
{
Process();
}
btnNew.Controls.Add(pnlTest);