【问题标题】:Creating ASP.NET controls from C# Code Behind error从 C# 代码隐藏错误创建 ASP.NET 控件
【发布时间】:2015-12-16 08:55:27
【问题描述】:

请考虑以下几点:

后面的代码:

public void InitiateTable() 
{
    Controls.Add(new LiteralControl("<table class=\"table table-invoice\" >")); //Line that gave me error
    ...
    Controls.Add(new LiteralControl("</table>"));
}

在我的 ASP.Net 页面上:

<% InitiateTable(); %>

当我运行代码时,它给了我一个错误提示:

The Controls collection cannot be modified because the control contains code blocks (i.e. <% ... %>).

谁能解释我做错了什么? 谢谢。

【问题讨论】:

标签: c# asp.net


【解决方案1】:

注意按照评论中的建议将 LiteralControl 更改为 Control。

您不能修改容器包含 代码块的控件集合,因为错误消息告诉您。 Controls.Add 将修改控件集合。要解决这个问题:

在你的aspx页面改变

<% InitiateTable(); %>

<asp:Literal runat="server" id="mytable" />

然后在您的页面加载方法中,添加对 InitiateTable() 的调用

然后在您的 InitiateTable() 方法中将您的代码更改为以下内容:

public void InitiateTable() 
{
    var literalControlValue = new StringBuilder();

    literalControlValue.Append("<table class=\"table table-invoice\" >"); 
    ...
    literalControlValue.Append("</thead>"));

    mytable.Text = literalControlValue.ToString();
}

【讨论】:

  • 您好,感谢您的回复,但我收到此错误 `Unknown server tag 'asp:LiteralControl'..` 我能知道为什么会这样吗?提前致谢。
  • 这是因为 LiteralControl 位于 System.Web.UI 命名空间中,而不是像许多其他控件一样位于 System.Web.UI.WebControls 命名空间中。只需在您的 aspx 页面指令中添加适当的标签前缀和 system.web.ui 即可。
  • 应该是asp:Literal而不是asp:LiteralControl
【解决方案2】:

Controls.Add(new LiteralControl("&lt;table class='table table-invoice'&gt;"));

【讨论】:

    【解决方案3】:

    问题是当您使用Controls 时,您引用的是页面本身,而不是您调用InitiateTable 的区域。

    如果您要在该区域中插入控件,这就是占位符的用途:

    <asp:Placeholder id="phTable"></Placeholder>
    

    然后在您的 Page_Load 或其他一些事件代码中:

    private void Page_Load(object sender, System.EventArgs e)
    {
        phTable.Controls.Add(new LiteralControl("<table class=\"table table-invoice\" >"));
        phTable.Add(new LiteralControl("</thead>"));
    }
    

    【讨论】:

      猜你喜欢
      • 2011-12-28
      • 2013-03-18
      • 1970-01-01
      • 2010-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-18
      相关资源
      最近更新 更多