我正在创建一个自定义web控件,但是当我在.ascx文件中引用它时,我在.cs文件上的控件是空的。我是不是遗漏了什么?
.ASCX
<asp:Table runat="server" BorderWidth="0" BorderStyle="None">
<asp:TableRow VerticalAlign="Middle" BorderWidth="0">
<asp:TableCell HorizontalAlign="Center" BorderWidth="0" BorderStyle="None">
<asp:Button ID="button" runat="server" Text="Button" />
</asp:TableCell>
</asp:TableRow>
<asp:TableFooterRow BorderWidth="0" BorderStyle="None">
<asp:TableCell HorizontalAlign="Center" ID="caption" Font-Size="12pt" Height="80px" VerticalAlign="Top" BorderWidth="0" BorderStyle="None" BorderColor="Transparent" />
</asp:TableFooterRow>
</asp:Table>.ASCX.CS
public void Process()
{
button.Text = "ok"; //it fails here because it's null;
}Test.aspx
MyButton button = new MyButton();
button.Process();发布于 2012-12-24 20:13:44
如果下列情况下,控件可以为空:
PlaceHolder中,您可以通过编程方式删除它来更改控件。ContentPlaceHolder中,您可以使用其他方法更改该内容。发布于 2012-12-25 05:38:15
当您想要从代码后面添加动态控件时,必须在任何aspx或ascx控件中添加该控件。
代码应该是这样。:
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);它会对你有用的。
https://stackoverflow.com/questions/14025245
复制相似问题