首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >.ascx上的控件在.ascx.cs中为空。

.ascx上的控件在.ascx.cs中为空。
EN

Stack Overflow用户
提问于 2012-12-24 19:56:22
回答 2查看 1.1K关注 0票数 0

我正在创建一个自定义web控件,但是当我在.ascx文件中引用它时,我在.cs文件上的控件是空的。我是不是遗漏了什么?

.ASCX

代码语言:javascript
复制
<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

代码语言:javascript
复制
public void Process()
{
    button.Text = "ok"; //it fails here because it's null;
}

Test.aspx

代码语言:javascript
复制
MyButton button = new MyButton();
button.Process();
EN

回答 2

Stack Overflow用户

发布于 2012-12-24 20:13:44

如果下列情况下,控件可以为空:

  1. PlaceHolder中,您可以通过编程方式删除它来更改控件。
  2. 在缓存中,asp.net使用缓存呈现的数据,而不再创建数据。
  3. ContentPlaceHolder中,您可以使用其他方法更改该内容。
  4. 一般来说,在运行时可以添加、删除和删除控件。
票数 0
EN

Stack Overflow用户

发布于 2012-12-25 05:38:15

当您想要从代码后面添加动态控件时,必须在任何aspx或ascx控件中添加该控件。

代码应该是这样。:

代码语言:javascript
复制
Button btnNew = new MyButton();
btnNew.Process();
btnNew.Controls.Add(pnlTest);

其中"pnlTest“应该是您在ascx页面中定义的任何html控件。

更新

这是你帖子的最新回复

代码语言:javascript
复制
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);

它会对你有用的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14025245

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档