5

我正在尝试从页面加载阶段后面的代码向页面添加控件,如下所示:

foreach (FileInfo fi in dirInfo.GetFiles())
{
    HyperLink hl = new HyperLink();
    hl.ID = "Hyperlink" + i++;
    hl.Text = fi.Name;
    hl.NavigateUrl = "../downloading.aspx?file=" + fi.Name + "&user=" + userIdpar;
    Page.Controls.Add(hl);
    Page.Controls.Add(new LiteralControl("<br/>")); 
}

我得到的错误是Page.Controls.Add(hl),这里是解释:

在 DataBind、Init、Load、PreRender 或 Unload 阶段不能修改控件集合。

我能做些什么来解决这个问题?提前致谢。

4

2 回答 2

4

创建您自己的容器集合并将它们添加到其中,而不是直接添加到页面控件集合中。

在 .aspx 上:

<asp:Panel id="links" runat="server" />

在后面的代码中(我建议使用Init事件处理程序而不是页面加载):

foreach (FileInfo fi in dirInfo.GetFiles())
{
  HyperLink hl = new HyperLink();
  hl.ID = "Hyperlink" + i++;
  hl.Text = fi.Name;
  hl.NavigateUrl = "../downloading.aspx?file=" + fi.Name + "&user=" + userIdpar;
  links.Controls.Add(hl);
  links.Controls.Add(new LiteralControl("<br/>"));
}
于 2010-12-19T20:14:05.440 回答
0

将控件添加到 Page 的 Init() 事件中。

于 2010-12-19T20:12:22.800 回答